#include "chartpaint.h"
#include <QFont>

ChartPaint::ChartPaint(QWidget *parent): QWidget{parent}
{

}

QChartView *ChartPaint::Paint(QString type, int dataArray[])
{
    // 创建柱状集合
    QBarSet *set0 = new QBarSet("电量");  // 创建第一个柱状集合
    QBarSet *set1 = new QBarSet("时间");  // 创建第二个柱状集合
    *set0 << dataArray[0] << dataArray[1];  // 电量集合--累计充--累计放--日充--日放
    *set1 << dataArray[2] << dataArray[3];  // 时间集合--累计充--累计放--日充--日放

    // 创建柱状系列
    QBarSeries *series0 = new QBarSeries();  // 创建第一个柱状系列
    series0->append(set0);  // 将第一个集合添加到第一个系列
    series0->setLabelsVisible(true);
    series0->setBarWidth(0.3);
    // series0->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);


    QBarSeries *series1 = new QBarSeries();  // 创建第二个柱状系列
    series1->append(set1);  // 将第二个集合添加到第二个系列
    series1->setLabelsVisible(true);
    series1->setBarWidth(0.3);
    // series1->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);

    // 创建图表
    QChart *chart = new QChart();  // 创建图表对象
    chart->addSeries(series0);  // 将第一个系列添加到图表
    chart->addSeries(series1);  // 将第二个系列添加到图表
    chart->setTitle(type + "充放电电量和时间柱状图");  // 设置图表标题
    chart->setTitleFont(QFont("微软雅黑", 10, QFont::Bold));

    // chart->setBackgroundBrush(QBrush(Qt::lightGray));

    // 创建X轴
    QBarCategoryAxis *axisX = new QBarCategoryAxis();  // 创建X轴
    axisX->append(QStringList() << type + "充" << type + "放");  // 设置X轴的类别
    chart->addAxis(axisX, Qt::AlignBottom);  // 将X轴添加到图表底部
    series0->attachAxis(axisX);  // 将X轴附加到第一个系列
    series1->attachAxis(axisX);  // 将X轴附加到第二个系列
    axisX->setLabelsFont(QFont("微软雅黑", 10, QFont::Bold));

    // 创建第一个Y轴
    QValueAxis *axisY1 = new QValueAxis();  // 创建第一个Y轴
    axisY1->setRange(0, (std::max(dataArray[0], dataArray[1])) * 1.1);  // 设置Y轴的范围
    axisY1->setLabelFormat("%i");  // 设置Y轴标签格式
    axisY1->setLabelsFont(QFont("微软雅黑", 10, QFont::Bold));
    axisY1->setTitleText(type + "充放电量(kWh)");  // 设置Y轴标题
    chart->addAxis(axisY1, Qt::AlignLeft);  // 将第一个Y轴添加到图表左侧
    series0->attachAxis(axisY1);  // 将第一个系列附加到第一个Y轴

    // 创建第二个Y轴
    QValueAxis *axisY2 = new QValueAxis();  // 创建第二个Y轴
    axisY2->setRange(0, (std::max(dataArray[2], dataArray[3])) * 1.2);  // 设置Y轴的范围
    axisY2->setLabelFormat("%i");  // 设置Y轴标签格式
    axisY2->setLabelsFont(QFont("微软雅黑", 10, QFont::Bold));
    axisY2->setTitleText(type + "充放时间(小时)");  // 设置Y轴标题
    chart->addAxis(axisY2, Qt::AlignRight);  // 将第二个Y轴添加到图表右侧
    series1->attachAxis(axisY2);  // 将第二个系列附加到第二个Y轴


    // 创建图表视图
    QChartView *chartView = new QChartView(chart);  // 创建图表视图对象
    chartView->setRenderHint(QPainter::Antialiasing);  // 设置抗锯齿渲染

    return chartView;
}
