Browse Source

Expressions inside groups

pull/15/head^2
Peter Forstmeier 15 years ago
parent
commit
88ae3c1f4a
  1. 47
      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. 22
      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. 19
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataNavigator.cs

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

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Linq;
using System.ComponentModel;
namespace ICSharpCode.Reports.Core
{
@ -41,20 +42,6 @@ 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
{
get {return this.indexList.CurrentPosition;}
@ -80,23 +67,19 @@ namespace ICSharpCode.Reports.Core @@ -80,23 +67,19 @@ namespace ICSharpCode.Reports.Core
return dataStore.AvailableFields;
}
}
public void Fill(ReportItemCollection collection)
{
var ss = this.indexList[this.indexList.CurrentPosition].ListIndex;
var current = dataStore.CurrentFromPosition(ss);
// CurrentItemsCollection currentItemsCollection = dataStore.FillDataRow(this.indexList[CurrentRow].ListIndex);
foreach (IDataItem item in collection)
{
FillInternal (current,item);
public void Fill(ReportItemCollection collection)
{
var ss = this.indexList[this.indexList.CurrentPosition].ListIndex;
var current = dataStore.CurrentFromPosition(ss);
foreach (IDataItem item in collection)
{
FillInternal(current, item);
}
}
}
private void FillInternal(object fillFrom,IDataItem item)
{
if (item is BaseDataItem)
@ -127,7 +110,6 @@ namespace ICSharpCode.Reports.Core @@ -127,7 +110,6 @@ namespace ICSharpCode.Reports.Core
}
public bool MoveNext()
{
this.indexList.CurrentPosition ++;
@ -143,11 +125,12 @@ namespace ICSharpCode.Reports.Core @@ -143,11 +125,12 @@ namespace ICSharpCode.Reports.Core
public CurrentItemsCollection GetDataRow
{
get {
return dataStore.FillDataRow(this.indexList[CurrentRow].ListIndex);
var ss = this.indexList[this.indexList.CurrentPosition].ListIndex;
return dataStore.FillDataRow(ss);
}
}
public IDataNavigator GetChildNavigator
{
get {

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

@ -89,9 +89,9 @@ namespace ICSharpCode.Reports.Core { @@ -89,9 +89,9 @@ namespace ICSharpCode.Reports.Core {
childList = new IndexList();
GroupComparer gc = CreateGroupHeader(element);
gc.IndexList = childList;
CreateGroupeChildren(childList,element);
CreateGroupedChildren(childList,element);
} else {
CreateGroupeChildren(childList,element);
CreateGroupedChildren(childList,element);
}
compVal = v;
}
@ -107,7 +107,7 @@ namespace ICSharpCode.Reports.Core { @@ -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);
}

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

@ -113,15 +113,6 @@ namespace ICSharpCode.Reports.Core { @@ -113,15 +113,6 @@ namespace ICSharpCode.Reports.Core {
return arrayList;
}
private void BuildAvailableFields ()
{
base.AvailableFields.Clear();
foreach (PropertyDescriptor p in this.listProperties){
base.AvailableFields.Add (new AbstractColumn(p.Name,p.PropertyType));
}
}
#endregion
#region SharpReportCore.IDataViewStrategy interface implementation
@ -129,14 +120,18 @@ namespace ICSharpCode.Reports.Core { @@ -129,14 +120,18 @@ namespace ICSharpCode.Reports.Core {
public override AvailableFieldsCollection AvailableFields
{
get {
BuildAvailableFields();
base.AvailableFields.Clear();
foreach (PropertyDescriptor p in this.listProperties){
base.AvailableFields.Add (new AbstractColumn(p.Name,p.PropertyType));
}
return base.AvailableFields;
}
}
public override object Current
{
get {
get
{
return this.baseList[((BaseComparer)base.IndexList[base.CurrentPosition]).ListIndex];
}
}
@ -273,10 +268,39 @@ namespace ICSharpCode.Reports.Core { @@ -273,10 +268,39 @@ namespace ICSharpCode.Reports.Core {
return this.baseList[pos];
}
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()
{
CurrentItemsCollection ci = base.FillDataRow();
CurrentItemsCollection ci = base.FillDataRow();
if (current != null) {
CurrentItem c = null;
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 @@ -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
public override CurrentItemsCollection FillDataRow()
@ -216,7 +205,11 @@ namespace ICSharpCode.Reports.Core @@ -216,7 +205,11 @@ namespace ICSharpCode.Reports.Core
public override AvailableFieldsCollection AvailableFields {
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;
}
}

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

@ -139,8 +139,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -139,8 +139,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void ConvertGroupFooter (ISimpleContainer container,ExporterCollection exporterCollection)
{
var footers = container.Items.FindGroupFooter();
if (footers.Count > 0) {
if (footers.Count > 0) {
Size rowSize = footers[0].Size;
CurrentPosition = ConvertStandardRow(exporterCollection,(ISimpleContainer)footers[0]);
FireGroupFooterRendering(footers[0]);
@ -151,7 +150,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -151,7 +150,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void PageBreakAfterGroupChange(BaseSection section,ExporterCollection exporterCollection)
{
if (CheckPageBreakAfterGroupChange(section) ) {
if (DataNavigator.HasMoreData)
@ -165,7 +163,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -165,7 +163,6 @@ namespace ICSharpCode.Reports.Core.Exporter
private static bool CheckPageBreakAfterGroupChange(ISimpleContainer container)
{
var groupedRows = container.Items.FindGroupHeader();
//var groupedRows = BaseConverter.FindGroupHeader(container);
if (groupedRows.Count > 0) {
var groupedRow = groupedRows[0];
return groupedRow.PageBreakOnGroupChange;
@ -173,19 +170,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -173,19 +170,6 @@ namespace ICSharpCode.Reports.Core.Exporter
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)
{
@ -242,11 +226,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -242,11 +226,8 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer)
{
Console.WriteLine("\tPrepareContainerForConverting");
FireSectionRendering(section);
LayoutHelper.SetLayoutForRow(Graphics,Layouter,simpleContainer);
//LayoutRow(simpleContainer);
}
protected Point ConvertStandardRow(ExporterCollection mylist, ISimpleContainer simpleContainer)
@ -281,7 +262,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -281,7 +262,6 @@ namespace ICSharpCode.Reports.Core.Exporter
protected static void FillRow (ISimpleContainer row,IDataNavigator currentNavigator)
{
Console.WriteLine("\tFillrow");
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 @@ -50,9 +50,6 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
}
ExportText textItem = column as ExportText;
if (textItem != null) {
// if (textItem.Text.StartsWith("=",StringComparison.InvariantCulture)) {
//// Console.WriteLine(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 @@ -109,7 +109,9 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions
private List<object> SetupDataSource (object data,IDataNavigator navigator)
{
navigator.Reset();
Console.WriteLine("");
navigator.Reset();
List<object> list = new List<object>();
while ( navigator.MoveNext()) {
CurrentItemsCollection row = navigator.GetDataRow;
@ -118,7 +120,7 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions @@ -118,7 +120,7 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions
if (currentItem != null) {
object s1 = Convert.ToString(currentItem.Value.ToString(),CultureInfo.CurrentCulture);
Console.WriteLine("\tvalue = {0}", s1.ToString());
if (IsNumeric(s1)) {
list.Add(Convert.ToDouble(s1,System.Globalization.CultureInfo.CurrentCulture));
} else {

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

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

Loading…
Cancel
Save