Group functions have been changed

This commit is contained in:
Arin Alex
2018-03-14 11:22:03 +03:00
parent bd7bea989e
commit 4c162e0e47
7 changed files with 111 additions and 33 deletions

View File

@@ -38,6 +38,7 @@ namespace LimeReport{
class DataSourceManager;
class BandDesignIntf;
class PageItemDesignIntf;
class GroupFunction : public QObject{
Q_OBJECT
@@ -50,8 +51,9 @@ public:
const QString& data(){return m_data;}
const QString& error(){return m_errorMessage;}
QVector<QVariant>& values(){return m_values;}
QHash<BandDesignIntf*, QVariant> m_valuesByBand;
const QString& dataBandName(){return m_dataBandName;}
virtual QVariant calculate()=0;
virtual QVariant calculate(PageItemDesignIntf* page = 0)=0;
public slots:
void slotBandRendered(BandDesignIntf* band);
protected:
@@ -95,7 +97,7 @@ public:
CountGroupFunction(const QString& expression, const QString& dataBandName, DataSourceManager *dataManager)
:GroupFunction(expression, dataBandName, dataManager){setName("COUNT");}
protected:
virtual QVariant calculate(){return values().count();}
virtual QVariant calculate(PageItemDesignIntf* page = 0);
};
class SumGroupFunction :public GroupFunction{
@@ -104,7 +106,7 @@ public:
SumGroupFunction(const QString& expression, const QString& dataBandName, DataSourceManager *dataManager)
:GroupFunction(expression, dataBandName, dataManager){setName("SUM");}
protected:
virtual QVariant calculate();
virtual QVariant calculate(PageItemDesignIntf* page = 0);
};
class AvgGroupFunction :public GroupFunction{
@@ -113,7 +115,7 @@ public:
AvgGroupFunction(const QString& expression, const QString& dataBandName, DataSourceManager *dataManager)
:GroupFunction(expression, dataBandName, dataManager){setName("AVG");}
protected:
virtual QVariant calculate();
virtual QVariant calculate(PageItemDesignIntf* page = 0);
};
class MinGroupFunction :public GroupFunction{
@@ -122,7 +124,7 @@ public:
MinGroupFunction(const QString& expression, const QString& dataBandName, DataSourceManager *dataManager)
:GroupFunction(expression, dataBandName, dataManager){setName("MIN");}
protected:
virtual QVariant calculate();
virtual QVariant calculate(PageItemDesignIntf* page = 0);
};
class MaxGroupFunction :public GroupFunction{
@@ -131,7 +133,7 @@ public:
MaxGroupFunction(const QString& expression, const QString& dataBandName, DataSourceManager *dataManager)
:GroupFunction(expression, dataBandName, dataManager){setName("MAX");}
protected:
virtual QVariant calculate();
virtual QVariant calculate(PageItemDesignIntf* page = 0);
};
template <typename T>