Browse Source

Expressions inside groups

pull/15/head^2
Peter Forstmeier 15 years ago
parent
commit
88ae3c1f4a
  1. 37
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs
  2. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs
  3. 48
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs
  4. 17
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  5. 20
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  6. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs
  7. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/AggregateFunctions/AggregateFunction.cs
  8. 17
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataNavigator.cs

37
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs

@ -3,6 +3,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.ComponentModel;
namespace ICSharpCode.Reports.Core namespace ICSharpCode.Reports.Core
{ {
@ -41,20 +42,6 @@ namespace ICSharpCode.Reports.Core
} }
public bool IsSorted {
get {
throw new NotImplementedException();
}
}
public bool IsGrouped {
get {
throw new NotImplementedException();
}
}
public int CurrentRow public int CurrentRow
{ {
get {return this.indexList.CurrentPosition;} get {return this.indexList.CurrentPosition;}
@ -82,20 +69,16 @@ namespace ICSharpCode.Reports.Core
} }
public void Fill(ReportItemCollection collection) public void Fill(ReportItemCollection collection)
{ {
var ss = this.indexList[this.indexList.CurrentPosition].ListIndex; var ss = this.indexList[this.indexList.CurrentPosition].ListIndex;
var current = dataStore.CurrentFromPosition(ss); var current = dataStore.CurrentFromPosition(ss);
foreach (IDataItem item in collection)
// CurrentItemsCollection currentItemsCollection = dataStore.FillDataRow(this.indexList[CurrentRow].ListIndex);
foreach (IDataItem item in collection)
{ {
FillInternal (current,item); FillInternal(current, item);
} }
}
}
private void FillInternal(object fillFrom,IDataItem item) private void FillInternal(object fillFrom,IDataItem item)
{ {
@ -127,7 +110,6 @@ namespace ICSharpCode.Reports.Core
} }
public bool MoveNext() public bool MoveNext()
{ {
this.indexList.CurrentPosition ++; this.indexList.CurrentPosition ++;
@ -143,7 +125,8 @@ namespace ICSharpCode.Reports.Core
public CurrentItemsCollection GetDataRow public CurrentItemsCollection GetDataRow
{ {
get { get {
return dataStore.FillDataRow(this.indexList[CurrentRow].ListIndex); var ss = this.indexList[this.indexList.CurrentPosition].ListIndex;
return dataStore.FillDataRow(ss);
} }
} }

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs

@ -89,9 +89,9 @@ namespace ICSharpCode.Reports.Core {
childList = new IndexList(); childList = new IndexList();
GroupComparer gc = CreateGroupHeader(element); GroupComparer gc = CreateGroupHeader(element);
gc.IndexList = childList; gc.IndexList = childList;
CreateGroupeChildren(childList,element); CreateGroupedChildren(childList,element);
} else { } else {
CreateGroupeChildren(childList,element); CreateGroupedChildren(childList,element);
} }
compVal = v; compVal = v;
} }
@ -107,7 +107,7 @@ namespace ICSharpCode.Reports.Core {
} }
protected static void CreateGroupeChildren(IndexList list,BaseComparer sc) protected static void CreateGroupedChildren(IndexList list,BaseComparer sc)
{ {
list.Add(sc); list.Add(sc);
} }

48
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs

@ -113,15 +113,6 @@ namespace ICSharpCode.Reports.Core {
return arrayList; return arrayList;
} }
private void BuildAvailableFields ()
{
base.AvailableFields.Clear();
foreach (PropertyDescriptor p in this.listProperties){
base.AvailableFields.Add (new AbstractColumn(p.Name,p.PropertyType));
}
}
#endregion #endregion
#region SharpReportCore.IDataViewStrategy interface implementation #region SharpReportCore.IDataViewStrategy interface implementation
@ -129,14 +120,18 @@ namespace ICSharpCode.Reports.Core {
public override AvailableFieldsCollection AvailableFields public override AvailableFieldsCollection AvailableFields
{ {
get { get {
BuildAvailableFields(); base.AvailableFields.Clear();
foreach (PropertyDescriptor p in this.listProperties){
base.AvailableFields.Add (new AbstractColumn(p.Name,p.PropertyType));
}
return base.AvailableFields; return base.AvailableFields;
} }
} }
public override object Current public override object Current
{ {
get { get
{
return this.baseList[((BaseComparer)base.IndexList[base.CurrentPosition]).ListIndex]; return this.baseList[((BaseComparer)base.IndexList[base.CurrentPosition]).ListIndex];
} }
} }
@ -274,9 +269,38 @@ namespace ICSharpCode.Reports.Core {
} }
public override CurrentItemsCollection FillDataRow(int pos)
{
var item = CurrentFromPosition(pos);
CurrentItemsCollection ci = new CurrentItemsCollection();
if (item != null)
{
CurrentItem c = null;
foreach (PropertyDescriptor pd in this.listProperties)
{
c = new CurrentItem();
c.ColumnName = pd.Name;
c.DataType = pd.PropertyType;
var s = pd.GetValue(item);
if (s != null)
{
c.Value = s.ToString();
}
else
{
c.Value = String.Empty;
}
ci.Add(c);
}
}
return ci;
}
public override CurrentItemsCollection FillDataRow() public override CurrentItemsCollection FillDataRow()
{ {
CurrentItemsCollection ci = base.FillDataRow(); CurrentItemsCollection ci = base.FillDataRow();
if (current != null) { if (current != null) {
CurrentItem c = null; CurrentItem c = null;
foreach (PropertyDescriptor pd in this.listProperties) foreach (PropertyDescriptor pd in this.listProperties)

17
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs

@ -156,17 +156,6 @@ namespace ICSharpCode.Reports.Core
} }
private void BuildAvailableFields ()
{
base.AvailableFields.Clear();
for (int i = 0;i < table.Columns.Count ;i ++ ) {
DataColumn col = this.table.Columns[i];
base.AvailableFields.Add (new AbstractColumn(col.ColumnName,col.DataType));
}
}
#region Test #region Test
public override CurrentItemsCollection FillDataRow() public override CurrentItemsCollection FillDataRow()
@ -216,7 +205,11 @@ namespace ICSharpCode.Reports.Core
public override AvailableFieldsCollection AvailableFields { public override AvailableFieldsCollection AvailableFields {
get { get {
BuildAvailableFields(); base.AvailableFields.Clear();
for (int i = 0;i < table.Columns.Count ;i ++ ) {
DataColumn col = this.table.Columns[i];
base.AvailableFields.Add (new AbstractColumn(col.ColumnName,col.DataType));
}
return base.AvailableFields; return base.AvailableFields;
} }
} }

20
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -140,7 +140,6 @@ namespace ICSharpCode.Reports.Core.Exporter
{ {
var footers = container.Items.FindGroupFooter(); var footers = container.Items.FindGroupFooter();
if (footers.Count > 0) { if (footers.Count > 0) {
Size rowSize = footers[0].Size; Size rowSize = footers[0].Size;
CurrentPosition = ConvertStandardRow(exporterCollection,(ISimpleContainer)footers[0]); CurrentPosition = ConvertStandardRow(exporterCollection,(ISimpleContainer)footers[0]);
FireGroupFooterRendering(footers[0]); FireGroupFooterRendering(footers[0]);
@ -151,7 +150,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void PageBreakAfterGroupChange(BaseSection section,ExporterCollection exporterCollection) protected void PageBreakAfterGroupChange(BaseSection section,ExporterCollection exporterCollection)
{ {
if (CheckPageBreakAfterGroupChange(section) ) { if (CheckPageBreakAfterGroupChange(section) ) {
if (DataNavigator.HasMoreData) if (DataNavigator.HasMoreData)
@ -165,7 +163,6 @@ namespace ICSharpCode.Reports.Core.Exporter
private static bool CheckPageBreakAfterGroupChange(ISimpleContainer container) private static bool CheckPageBreakAfterGroupChange(ISimpleContainer container)
{ {
var groupedRows = container.Items.FindGroupHeader(); var groupedRows = container.Items.FindGroupHeader();
//var groupedRows = BaseConverter.FindGroupHeader(container);
if (groupedRows.Count > 0) { if (groupedRows.Count > 0) {
var groupedRow = groupedRows[0]; var groupedRow = groupedRows[0];
return groupedRow.PageBreakOnGroupChange; return groupedRow.PageBreakOnGroupChange;
@ -173,19 +170,6 @@ namespace ICSharpCode.Reports.Core.Exporter
return false; return false;
} }
/*
protected static Collection<GroupHeader> FindGroupHeader (ISimpleContainer container)
{
return new Collection<GroupHeader>(container.Items.OfType<GroupHeader>().ToList());
}
*/
/*
protected static Collection<GroupFooter> FindGroupFooter (ISimpleContainer container)
{
return new Collection<GroupFooter>(container.Items.OfType<GroupFooter>().ToList());
}
*/
protected virtual Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section) protected virtual Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section)
{ {
@ -242,11 +226,8 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer) protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer)
{ {
Console.WriteLine("\tPrepareContainerForConverting");
FireSectionRendering(section); FireSectionRendering(section);
LayoutHelper.SetLayoutForRow(Graphics,Layouter,simpleContainer); LayoutHelper.SetLayoutForRow(Graphics,Layouter,simpleContainer);
//LayoutRow(simpleContainer);
} }
protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer) protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer)
@ -281,7 +262,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected static void FillRow (ISimpleContainer row,IDataNavigator currentNavigator) protected static void FillRow (ISimpleContainer row,IDataNavigator currentNavigator)
{ {
Console.WriteLine("\tFillrow");
currentNavigator.Fill(row.Items); currentNavigator.Fill(row.Items);
} }

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs

@ -50,9 +50,6 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
} }
ExportText textItem = column as ExportText; ExportText textItem = column as ExportText;
if (textItem != null) { if (textItem != null) {
// if (textItem.Text.StartsWith("=",StringComparison.InvariantCulture)) {
//// Console.WriteLine(textItem.Text);
// }
textItem.Text = evaluator.Evaluate(textItem.Text); textItem.Text = evaluator.Evaluate(textItem.Text);
} }
} }

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/AggregateFunctions/AggregateFunction.cs

@ -109,7 +109,9 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions
private List<object> SetupDataSource (object data,IDataNavigator navigator) private List<object> SetupDataSource (object data,IDataNavigator navigator)
{ {
navigator.Reset(); Console.WriteLine("");
navigator.Reset();
List<object> list = new List<object>(); List<object> list = new List<object>();
while ( navigator.MoveNext()) { while ( navigator.MoveNext()) {
CurrentItemsCollection row = navigator.GetDataRow; CurrentItemsCollection row = navigator.GetDataRow;
@ -118,7 +120,7 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions
if (currentItem != null) { if (currentItem != null) {
object s1 = Convert.ToString(currentItem.Value.ToString(),CultureInfo.CurrentCulture); object s1 = Convert.ToString(currentItem.Value.ToString(),CultureInfo.CurrentCulture);
Console.WriteLine("\tvalue = {0}", s1.ToString());
if (IsNumeric(s1)) { if (IsNumeric(s1)) {
list.Add(Convert.ToDouble(s1,System.Globalization.CultureInfo.CurrentCulture)); list.Add(Convert.ToDouble(s1,System.Globalization.CultureInfo.CurrentCulture));
} else { } else {

17
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataNavigator.cs

@ -9,15 +9,13 @@ using System.ComponentModel;
public interface IDataNavigator { public interface IDataNavigator {
void Fill (ReportItemCollection collection); void Fill (ReportItemCollection collection);
bool MoveNext () ; bool MoveNext ();
void Reset(); void Reset();
CurrentItemsCollection GetDataRow {get;} CurrentItemsCollection GetDataRow {get;}
bool HasMoreData {get;}
bool HasMoreData {
get;
}
#region Try make recursive with ChildNavigator #region Try make recursive with ChildNavigator
@ -25,16 +23,8 @@ using System.ComponentModel;
#endregion #endregion
// childList -----------------
bool HasChildren {get;} bool HasChildren {get;}
// end child list --------------------
/*
bool IsSorted {get;}
bool IsGrouped {get;}
*/
int CurrentRow {get;} int CurrentRow {get;}
int Count {get;} int Count {get;}
@ -42,6 +32,5 @@ using System.ComponentModel;
object Current {get;} object Current {get;}
AvailableFieldsCollection AvailableFields{get;} AvailableFieldsCollection AvailableFields{get;}
} }
} }

Loading…
Cancel
Save