syschartnavigation.h 3.05 KB
Newer Older
‘oliver.hui’'s avatar
‘oliver.hui’ committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
#ifndef SYSCHARTNAVIGATION_H
#define SYSCHARTNAVIGATION_H

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

#include <topcore/topclassabs.h>
#include <topcore/topclasshelper.h>
#include <QtPrintSupport/QPrinter>
#include <QResizeEvent>

class TComboBox;
class TSplitter;
class QVBoxLayout;
class TChartWidget;
class TScrollArea;
class QScrollArea;
class TAccordion;

class SysChartNavigation : public TopClassAbs
{
    Q_OBJECT
public:
    explicit SysChartNavigation(const QString &iModuleName = QString(""),
                                const QVariantMap &iUrlPars = QVariantMap(),
                                QWidget *iParent = nullptr);
    ~SysChartNavigation();
public slots:
    void onSearch(); // 搜索事件
    void onClear(); // 清空输入
    void onDoubleClicked(); // 图形控件的双击事件
    void onExportPdfClicked(const QString &iFileStr = ""); // 导出PDF事件
    void onExportExcelClicked(const QString &iFileStr = ""); // 导出Excel事件 (ExcelXS)
    void onExportExcelClickedOld(); // 导出Excel事件 (TExcel)
    void graphOnly(int iMode = 0);
    void setChartVisibleData(const QVariantMap &iDataMap);
    QVariantMap chartVisibleData();
    TUiLoader *uiloader();
    QString currentNaviName();

protected:
    void uidChangeEvent(const QString &iUidStr) override;
    void resizeEvent(QResizeEvent *iEvent) override;
private:
    void initUi();
    void dynamicGenerateChart(const int &pId, const QString &funcJsonData, const QVariantMap &packMap, const QString &wgtType);
    void configGenerateChart(const int &pId, const QString &funcJsonData, const QVariantMap &packMap, const QString &wgtType);
    void generateUiLoader(const int &pId, const QString &funcJsonData, const QVariantMap &packMap, const QString &wgtType);
    QString mapToJson(const QVariantMap &data);
    QVariantList listPageType(); //得到导出PDF的纸张类型
    QVariantList listOpenType(); //导出PDF是否打开
    QPagedPaintDevice::PageSize pageTypeToEnum(const QString &pageSize); //纸张类型转Enum
    int calcTreeDepth(const QVariantList &iDataList);
    int calcTreeDepth(const QVariantMap &iDataMap);
    int calcTreeLeafSize(const QVariantMap &iDataMap);
private:
    TComboBox* mSizeComboBox = nullptr;
    TComboBox* mOpenComboBox = nullptr;
    TUiLoader* mUiLoader = nullptr;
    TSplitter* mSplitter = nullptr;
    QWidget* mChartListWgt = nullptr;
    QVBoxLayout* mUiLoaderLayout = nullptr;
    QMap<QString, TChartWidget*> mChartMap;
    QMap<QString,QScrollArea*> mChartAreaMap;
    QMap<TChartWidget*, QString> mChartParameterRemarkMap; //TChartWidget对应的graphId
    QMap<QString, TUiLoader*> mUiLoaderMap;
    QMap<TUiLoader*, QString> mUiLoaderParamRemarkMap;
    TScrollArea *mScrollArea = nullptr;
    TAccordion *mAccordion = nullptr;
    QVariantMap mChartVisibleData;
    QString mNaviName;
    QVariantMap mDataSrcRetCache; // 数据源函数执行结果缓存(图表)
    QVariantMap mDataSrcRetCacheUiLoader; // 数据源函数执行结果缓存(UiLoader)
    QVariantMap mDataSrcRetStrCache;
};

#endif // SYSCHARTNAVIGATION_H