src/ChartFermenter.cpp

changeset 434
ebf4996ab396
parent 371
d03a426e0b6b
child 490
b67fb2e5bb41
equal deleted inserted replaced
433:40d4d2bb5f11 434:ebf4996ab396
42 buttonBox->setObjectName(QString::fromUtf8("buttonBox")); 42 buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
43 buttonBox->setOrientation(Qt::Vertical); 43 buttonBox->setOrientation(Qt::Vertical);
44 buttonBox->setStandardButtons(QDialogButtonBox::Ok); 44 buttonBox->setStandardButtons(QDialogButtonBox::Ok);
45 buttonBox->addButton(saveButton,QDialogButtonBox::ActionRole); 45 buttonBox->addButton(saveButton,QDialogButtonBox::ActionRole);
46 46
47 QSplineSeries *pv_air = new QSplineSeries(); 47 QLineSeries *pv_air = new QLineSeries();
48 QSplineSeries *pv_beer = new QSplineSeries(); 48 QLineSeries *pv_beer = new QLineSeries();
49 QSplineSeries *pv_chiller = new QSplineSeries(); 49 QLineSeries *pv_chiller = new QLineSeries();
50 QSplineSeries *pwr_cool = new QSplineSeries(); 50 QLineSeries *pwr_cool1 = new QLineSeries();
51 QSplineSeries *pwr_heat = new QSplineSeries(); 51 QLineSeries *pwr_cool0 = new QLineSeries();
52 QLineSeries *pwr_heat1 = new QLineSeries(); // Top side of area
53 QLineSeries *pwr_heat0 = new QLineSeries(); // Bottom side of area
52 54
53 query.prepare("SELECT * FROM log_fermenter WHERE code=:code ORDER BY datetime"); 55 query.prepare("SELECT * FROM log_fermenter WHERE code=:code ORDER BY datetime");
54 query.bindValue(":code", code); 56 query.bindValue(":code", code);
55 query.exec(); 57 query.exec();
56 while (query.next()) { 58 while (query.next()) {
57 timestamp = query.value("datetime").toDateTime().toSecsSinceEpoch() * 1000; 59 timestamp = query.value("datetime").toDateTime().toSecsSinceEpoch() * 1000;
58 pv_air->append(timestamp, query.value("temp_air").toDouble()); 60 pv_air->append(timestamp, query.value("temp_air").toDouble());
59 pv_beer->append(timestamp, query.value("temp_beer").toDouble()); 61 pv_beer->append(timestamp, query.value("temp_beer").toDouble());
60 if (query.value("temp_chiller").toDouble() > 0) 62 if (query.value("temp_chiller").toDouble() > 0)
61 pv_chiller->append(timestamp, query.value("temp_chiller").toDouble()); 63 pv_chiller->append(timestamp, query.value("temp_chiller").toDouble());
62 pwr_cool->append(timestamp, query.value("cooler_power").toDouble()); 64 pwr_cool0->append(timestamp, 0);
63 pwr_heat->append(timestamp, query.value("heater_power").toDouble()); 65 pwr_cool1->append(timestamp, query.value("cooler_power").toInt());
66 pwr_heat0->append(timestamp, 0);
67 pwr_heat1->append(timestamp, query.value("heater_power").toInt());
64 } 68 }
65 69
66 pv_air->setName(tr("Air")); 70 pv_air->setName(tr("Air"));
67 pv_air->setColor(QColorConstants::Svg::lightgreen); 71 pv_air->setColor(QColorConstants::Svg::lightgreen);
68 pv_beer->setName(tr("Beer")); 72 pv_beer->setName(tr("Beer"));
69 QPen pen(QColorConstants::Svg::navy); 73 QPen pen(QColorConstants::Svg::navy);
70 pen.setWidth(3); 74 pen.setWidth(2);
71 pv_beer->setPen(pen); 75 pv_beer->setPen(pen);
72 pv_chiller->setName(tr("Chiller")); 76 pv_chiller->setName(tr("Chiller"));
73 pv_chiller->setColor(QColorConstants::Svg::lightsalmon); 77 pv_chiller->setColor(QColorConstants::Svg::lightsalmon);
74 pv_chiller->setOpacity(0.75); 78 pv_chiller->setOpacity(0.75);
75 79
80 QAreaSeries *pwr_cool = new QAreaSeries(pwr_cool0, pwr_cool1);
76 pwr_cool->setName("Cool %"); 81 pwr_cool->setName("Cool %");
77 pwr_cool->setOpacity(0.25); 82 pwr_cool->setOpacity(0.50);
78 pwr_cool->setColor(QColorConstants::Blue); 83 pwr_cool->setColor(QColorConstants::Blue);
84 QAreaSeries *pwr_heat = new QAreaSeries(pwr_heat0, pwr_heat1);
79 pwr_heat->setName("Heat %"); 85 pwr_heat->setName("Heat %");
80 pwr_heat->setOpacity(0.25); 86 pwr_heat->setOpacity(0.50);
81 pwr_heat->setColor(QColorConstants::Red); 87 pwr_heat->setColor(QColorConstants::Red);
82 88
83 chart = new QChart(); 89 chart = new QChart();
84 chart->setTitle(QString("%1 \"%2\"").arg(code).arg(name)); 90 chart->setTitle(QString("%1 \"%2\"").arg(code).arg(name));
85 chart->addSeries(pwr_cool); 91 chart->addSeries(pwr_cool); // Order is important, first drawn is lowest layer.
86 chart->addSeries(pwr_heat); 92 chart->addSeries(pwr_heat);
87 chart->addSeries(pv_chiller); 93 chart->addSeries(pv_chiller);
88 chart->addSeries(pv_air); 94 chart->addSeries(pv_air);
89 chart->addSeries(pv_beer); 95 chart->addSeries(pv_beer); // Top layer
90 96
91 QDateTimeAxis *axisX = new QDateTimeAxis; 97 QDateTimeAxis *axisX = new QDateTimeAxis;
92 axisX->setTickCount(10); 98 axisX->setTickCount(10);
93 axisX->setFormat("dd MMM"); 99 axisX->setFormat("dd MMM");
94 axisX->setTitleText(tr("Date")); 100 axisX->setTitleText(tr("Date"));
117 axisYR->setLabelsFont(QFont("Helvetica", 8, QFont::Normal)); 123 axisYR->setLabelsFont(QFont("Helvetica", 8, QFont::Normal));
118 chart->addAxis(axisYR, Qt::AlignRight); 124 chart->addAxis(axisYR, Qt::AlignRight);
119 pwr_cool->attachAxis(axisYR); 125 pwr_cool->attachAxis(axisYR);
120 pwr_heat->attachAxis(axisYR); 126 pwr_heat->attachAxis(axisYR);
121 127
122 connect(pv_air, &QSplineSeries::hovered, this, &ChartFermenter::tooltip); 128 connect(pv_air, &QLineSeries::hovered, this, &ChartFermenter::tooltip);
123 connect(pv_beer, &QSplineSeries::hovered, this, &ChartFermenter::tooltip); 129 connect(pv_beer, &QLineSeries::hovered, this, &ChartFermenter::tooltip);
124 connect(pv_chiller, &QSplineSeries::hovered, this, &ChartFermenter::tooltip); 130 connect(pv_chiller, &QLineSeries::hovered, this, &ChartFermenter::tooltip);
125 131
126 chartView = new QChartView(chart); 132 chartView = new QChartView(chart);
127 chartView->setRenderHint(QPainter::Antialiasing); 133 chartView->setRenderHint(QPainter::Antialiasing);
128 dialog->setLayout(new QHBoxLayout); 134 dialog->setLayout(new QHBoxLayout);
129 dialog->layout()->addWidget(chartView); 135 dialog->layout()->addWidget(chartView);

mercurial