Browse Source

PageBreak, draw ReportFooter

reports
Peter Forstmeier 13 years ago
parent
commit
2689ef35ac
  1. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
  2. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  3. 41
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  4. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  5. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs
  6. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
  7. 17
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs

@ -31,11 +31,12 @@ namespace ICSharpCode.Reporting.Exporter
public override void Run () { public override void Run () {
foreach (var page in Pages) { foreach (var page in Pages) {
ShowDebug(page); ShowDebug(page);
Console.WriteLine("-----------PageBreak---------");
} }
} }
void ShowDebug(IExportContainer container) void ShowDebug(IExportContainer container)
{ {
foreach (var item in container.ExportedItems) { foreach (var item in container.ExportedItems) {
var exportContainer = item as IExportContainer; var exportContainer = item as IExportContainer;

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

@ -98,7 +98,7 @@ namespace ICSharpCode.Reporting.PageBuilder
this.BuildReportHeader(); this.BuildReportHeader();
BuildPageHeader(); BuildPageHeader();
BuildPageFooter(); BuildPageFooter();
BuildReportFooter(); // BuildReportFooter();
} }
protected IExportContainer CreateSection(IReportContainer section,Point location) protected IExportContainer CreateSection(IReportContainer section,Point location)

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

@ -55,63 +55,66 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentLocation, CurrentLocation,
collectionSource); collectionSource);
detail = CreateContainerForSection(); detail = CreateContainerForSection(DetailStart);
var position = Point.Empty; var position = Point.Empty;
do { do {
collectionSource.Fill(Container.Items); collectionSource.Fill(Container.Items);
var r = converter.Convert(Container as ExportContainer,position); var r = converter.Convert(Container as ExportContainer,position);
if (ExeedPage(r)) { if (PageFull(r)) {
detail.ExportedItems.AddRange(r); detail.ExportedItems.AddRange(r);
CurrentPage.ExportedItems.Insert(2,detail); CurrentPage.ExportedItems.Insert(2,detail);
Pages.Add(CurrentPage); Pages.Add(CurrentPage);
// CurrentLocation = DetailStart;
position = Point.Empty; position = Point.Empty;
CurrentPage = CreateNewPage(); CurrentPage = CreateNewPage();
WriteStandardSections(); WriteStandardSections();
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
detail = CreateContainerForSection(); detail = CreateContainerForSection(DetailStart);
} else { } else {
detail.ExportedItems.AddRange(r); detail.ExportedItems.AddRange(r);
position = new Point(Container.Location.Y,position.Y + Container.Size.Height); position = new Point(Container.Location.Y,position.Y + Container.Size.Height);
} }
} }
while (collectionSource.MoveNext()); while (collectionSource.MoveNext());
if (Pages.Count == 0) { InsertDetailAtPosition(detail);
CurrentPage.ExportedItems.Insert(2,detail); base.BuildReportFooter();
} else {
CurrentPage.ExportedItems.Insert(1,detail);
}
var a = base.Pages;
} else { } else {
detail = base.CreateSection(Container,CurrentLocation); detail = CreateContainerForSection(DetailStart);
InsertDetailAtPosition(detail);
base.BuildReportFooter();
} }
} }
IExportContainer CreateContainerForSection( )
IExportContainer CreateContainerForSection(Point location )
{ {
var detail = (ExportContainer)Container.CreateExportColumn(); var detail = (ExportContainer)Container.CreateExportColumn();
detail.Location = CurrentLocation; detail.Location = location;
return detail; return detail;
} }
bool ExeedPage(System.Collections.Generic.List<IExportColumn> r) bool PageFull(System.Collections.Generic.List<IExportColumn> column)
{ {
var rect = new Rectangle(r[0].Location,r[0].Size); var rect = new Rectangle(column[0].Location,column[0].Size);
if (rect.Contains(new Point(100,500))) { if (rect.Contains(new Point(100,500))) {
Console.WriteLine("PageBreak");
return true; return true;
} }
Console.WriteLine("contains {0} - {1}",rect,DetailEnds);
return false; return false;
} }
void InsertDetailAtPosition(IExportContainer container)
{
if (Pages.Count == 0) {
CurrentPage.ExportedItems.Insert(2, container);
} else {
CurrentPage.ExportedItems.Insert(1, container);
}
}
internal IReportContainer Container { get; private set; } internal IReportContainer Container { get; private set; }

11
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs

@ -37,21 +37,10 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuilDetail() void BuilDetail()
{ {
Console.WriteLine(" Build DetailSection {0} - {1}",DetailStart,DetailEnds);
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
var detail = CreateSection(ReportModel.DetailSection,CurrentLocation); var detail = CreateSection(ReportModel.DetailSection,CurrentLocation);
detail.Parent = CurrentPage; detail.Parent = CurrentPage;
CurrentPage.ExportedItems.Insert(2,detail); CurrentPage.ExportedItems.Insert(2,detail);
} }
// protected override void CreatePage()
// {
// CurrentPage = base.CreatePage();
//// WriteStandardSections();
//// BuilDetail();
//// base.AddPage(CurrentPage);
// Console.WriteLine("------{0}---------",ReportModel.ReportSettings.PageSize);
// }
} }
} }

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
public void CurrentPageContainFiveItems() { public void CurrentPageContainFiveItems() {
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var page = reportCreator.Pages[0]; var page = reportCreator.Pages[0];
Assert.That(page.ExportedItems.Count, Is.EqualTo(5)); Assert.That(page.ExportedItems.Count, Is.EqualTo(4));
} }

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs

@ -25,14 +25,14 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
private IReportCreator reportCreator; private IReportCreator reportCreator;
[Test] [Test]
public void PageContainsFiveSections() public void FormsReportContains_4_Sections()
{ {
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var x = reportCreator.Pages[0].ExportedItems; var x = reportCreator.Pages[0].ExportedItems;
var y = from s in x var y = from s in x
where s.GetType() == typeof(ExportContainer) where s.GetType() == typeof(ExportContainer)
select s; select s;
Assert.That(y.ToList().Count,Is.EqualTo(5)); Assert.That(y.ToList().Count,Is.EqualTo(4));
Console.WriteLine("-------PageLayoutFixture:ShowDebug---------"); Console.WriteLine("-------PageLayoutFixture:ShowDebug---------");
var ex = new DebugExporter(reportCreator.Pages); var ex = new DebugExporter(reportCreator.Pages);
ex.Run(); ex.Run();

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

@ -36,16 +36,25 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
[Test] [Test]
public void PageContainsFiveSections() public void FirstPageContains_4_Sections()
{ {
reportCreator.BuildExportList(); reportCreator.BuildExportList();
var exporteditems = reportCreator.Pages[0].ExportedItems; var exporteditems = reportCreator.Pages[0].ExportedItems;
var sections = from s in exporteditems var sections = from s in exporteditems
where s.GetType() == typeof(ExportContainer) where s.GetType() == typeof(ExportContainer)
select s; select s;
Assert.That(sections.ToList().Count,Is.EqualTo(5)); Assert.That(sections.ToList().Count,Is.EqualTo(4));
} }
public void LastPageContains_4_Sections()
{
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));
}
[Test] [Test]
public void DetailContainsOneDataItem() { public void DetailContainsOneDataItem() {
@ -58,8 +67,8 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
var result = section.ExportedItems[0]; var result = section.ExportedItems[0];
Assert.That(result,Is.AssignableFrom(typeof(ExportText))); Assert.That(result,Is.AssignableFrom(typeof(ExportText)));
Console.WriteLine("-------PageLayoutFixture:ShowDebug---------"); Console.WriteLine("-------PageLayoutFixture:ShowDebug---------");
// var ex = new DebugExporter(reportCreator.Pages); var ex = new DebugExporter(reportCreator.Pages);
// ex.Run(); ex.Run();
} }

Loading…
Cancel
Save