#ifndef COALSTATISTICSCHARTWIDGET_H
#define COALSTATISTICSCHARTWIDGET_H

#include "component/qcustomplot/qcustomplot.h"

#include <QWidget>
#include <QtCharts>

QT_CHARTS_USE_NAMESPACE
namespace Ui {
class CoalStatisticsChartWidget;
}

enum TimeUnit {
    Hour = 0, // 时
    Day = 1, // 天
    Month = 2, // 月
    Year = 3 // 年
};

class CoalStatisticsChartWidget : public QWidget {
    Q_OBJECT

public:
    explicit CoalStatisticsChartWidget(QWidget* parent = nullptr);
    ~CoalStatisticsChartWidget();

signals:
    void querySuccessInfo(QString& queryInfo);

private slots:

    /**
   * @brief on_pushButton_coalStatisOk_clicked 点击确定按钮
   */
    void on_pushButton_coalStatisOk_clicked();

private:
    /**
   * @brief initCoalStatisticsBarChart 初始化煤量统计柱状图
   */
    void initCoalStatisticsBarChart();

    /**
   * @brief formatTimeRange 格式化时间范围
   * @param beginTimeStr
   * @param endTimeStr
   * @param formattedBeginTime
   * @param formattedEndTime
   */
    void formatTimeRange(const QString& beginTimeStr, const QString& endTimeStr, QString& formattedBeginTime, QString& formattedEndTime);

    /**
    * @brief getLastSixFullHours 计算前六个整点时间
    * @param currentTime   当前时间
    * @return  六个整点数
    */
    QList<QString> getLastSixFullHours(const QDateTime& currentTime);

    /**
    * @brief initCustomCoalStatisticsBarChart  初始化用户自定义柱状图
    */
    void initCustomCoalStatisticsBarChart();

    /**
     * @brief initCustomPlotCoalStatisticsBarChart 初始化customPlot柱状图
     */
    void initCustomPlotCoalStatisticsBarChart();

    /**
    * @brief getCoalStatisInfoByHttpRequest 通过Http请求获取煤量统计信息
    * @param startTime 请求起始时间
    * @param endTime   请求终止时间
    * @param statisticUnit 统计单位
    * @param volumeDataMap 体积统计结果Map
    */
    void getCoalStatisInfoByHttpRequest(const QString& startTime,
        const QString& endTime,
        const QString& statisticUnit);

    /**
   * @brief updateCoalStatisticsChart 更新煤溜统计柱状图数据
   * @param volumeDataMap 统计结果数据
   */
    void updateCoalStatisticsChart(const QMap<QString, double>& volumeDataMap);

private:
    Ui::CoalStatisticsChartWidget* ui;

    QChart* m_chart;
    QChartView* m_chartView;
    QBarSeries* m_series;
    QBarCategoryAxis* m_axisX;
    //    QDateTimeAxis* m_axisX;
    //    QValueAxis* m_axisX;
    QValueAxis* m_axisY;

    QTimer* m_timer;

    QCustomPlot* m_customPlot;
    QCPBars* m_barGraph;

    QSettings* m_systemSetting;

    double m_toalValue = 0.0;

    /**
   * @brief m_volumeDataMap 查询出煤量数据
   */
    QMap<QString, double> m_volumeDataMap;
};

#endif // COALSTATISTICSCHARTWIDGET_H
