src/DetailiSpindel.cpp

changeset 537
48de0f61e5ea
parent 502
0f15edebc665
equal deleted inserted replaced
536:3d327db12cef 537:48de0f61e5ea
62 62
63 63
64 void DetailiSpindel::refreshTable() 64 void DetailiSpindel::refreshTable()
65 { 65 {
66 QSqlQuery query; 66 QSqlQuery query;
67 double angle, plato, sg, poly[4];
67 68
68 query.prepare("SELECT * FROM mon_ispindels WHERE record = :recno"); 69 query.prepare("SELECT * FROM mon_ispindels WHERE record = :recno");
69 query.bindValue(":recno", this->recno); 70 query.bindValue(":recno", this->recno);
70 query.exec(); 71 query.exec();
71 if (query.next()) { 72 if (query.next()) {
85 86
86 ui->uuidEdit->setText(_uuid); 87 ui->uuidEdit->setText(_uuid);
87 ui->systemEdit->setText(_node+"/"+_alias); 88 ui->systemEdit->setText(_node+"/"+_alias);
88 ui->codePick->setItemText(0, _alias.toUpper()+" - "+_alias); 89 ui->codePick->setItemText(0, _alias.toUpper()+" - "+_alias);
89 ui->alarmLED->setChecked(alarm); 90 ui->alarmLED->setChecked(alarm);
91 ui->lastEdit->setText(query.value("lastseen").toDateTime().toString("dd MMM HH:mm:ss"));
92 ui->codeEdit->setText(_beercode+" - "+_beername);
93 ui->powerLED->setChecked(mode);
94 ui->modeEdit->show();
95 ui->modeEdit->setCurrentIndex(mode ? 1:0);
90 96
91 if (online) { 97 if (online) {
92 ui->statusEdit->setText(tr("Online")); 98 ui->statusEdit->setText(tr("Online"));
93 ui->statusEdit->setStyleSheet(""); 99 ui->statusEdit->setStyleSheet("");
94 ui->codeEdit->setText(_beercode+" - "+_beername);
95 ui->thermoMeter->setNominal(query.value("yeast_lo").toDouble()); 100 ui->thermoMeter->setNominal(query.value("yeast_lo").toDouble());
96 ui->thermoMeter->setCritical(query.value("yeast_hi").toDouble()); 101 ui->thermoMeter->setCritical(query.value("yeast_hi").toDouble());
97 102 ui->modeEdit->setEnabled(true);
98 ui->powerLED->setChecked(mode);
99 ui->modeEdit->show();
100 if (mode) { 103 if (mode) {
101 ui->modeEdit->setCurrentIndex(1);
102 ui->codePick->hide(); 104 ui->codePick->hide();
103 } else { 105 } else {
104 ui->modeEdit->setCurrentIndex(0);
105 ui->codePick->show(); 106 ui->codePick->show();
106 } 107 }
107 108
109 plato = query.value("gravity").toDouble();
110 angle = query.value("angle").toDouble();
111 /*
112 * Try to use the calibrate poly to recalcultate the density.
113 */
114 QJsonParseError parseError;
115 const auto& json = query.value("calibrate").toString();
116 if (!json.trimmed().isEmpty()) {
117 const auto& formattedJson = QString("%1").arg(json);
118 QJsonDocument jsonResponse = QJsonDocument::fromJson(formattedJson.toUtf8(), &parseError);
119 QJsonObject jsonObj = jsonResponse.object();
120 QJsonArray polyData = jsonObj.value("polyData").toArray();
121 if (polyData.size() == 4) {
122 for (int i = 0; i < polyData.size(); i++) {
123 poly[i] = polyData.at(i).toDouble();
124 }
125 /* New plato from current polynomial */
126 plato = (poly[0] * pow(angle, 3)) + (poly[1] * pow(angle, 2)) + (poly[2] * angle) + poly[3];
127 }
128 }
129 sg = Utils::plato_to_sg(plato);
130
108 ui->voltEdit->setText(QString("%1").arg(query.value("battery").toDouble(), 4, 'f', 3, '0')); 131 ui->voltEdit->setText(QString("%1").arg(query.value("battery").toDouble(), 4, 'f', 3, '0'));
109 ui->tiltEdit->setText(QString("%1").arg(query.value("angle").toDouble(), 6, 'f', 5, '0')); 132 ui->tiltEdit->setText(QString("%1").arg(angle, 6, 'f', 5, '0'));
110 ui->platoEdit->setText(QString("%1").arg(query.value("gravity").toDouble(), 4, 'f', 3, '0')); 133 ui->platoEdit->setText(QString("%1").arg(plato, 4, 'f', 3, '0'));
111 double sg = Utils::plato_to_sg(query.value("gravity").toDouble());
112 ui->sgEdit->setText(QString("%1").arg(sg, 5, 'f', 4, '0')); 134 ui->sgEdit->setText(QString("%1").arg(sg, 5, 'f', 4, '0'));
113 ui->lastEdit->setText(query.value("lastseen").toDateTime().toString("dd MMM HH:mm:ss"));
114 135
115 if (query.value("gravity").toDouble()) { 136 if (query.value("gravity").toDouble()) {
116 double o_plato = query.value("og_gravity").toDouble(); 137 double o_plato = query.value("og_gravity").toDouble();
117 double og = Utils::plato_to_sg(o_plato); 138 double og = Utils::plato_to_sg(o_plato);
118 double svg = Utils::calc_svg(og, sg); 139 double svg = Utils::calc_svg(og, sg);
156 177
157 } else { 178 } else {
158 /* Offline */ 179 /* Offline */
159 ui->statusEdit->setText(tr("Offline")); 180 ui->statusEdit->setText(tr("Offline"));
160 ui->statusEdit->setStyleSheet("background-color: red"); 181 ui->statusEdit->setStyleSheet("background-color: red");
161 ui->powerLED->setChecked(false);
162 ui->alarmLED->setChecked(true); 182 ui->alarmLED->setChecked(true);
163 ui->codePick->hide(); 183 ui->codePick->hide();
164 ui->modeEdit->hide(); 184 ui->modeEdit->setEnabled(false);
165 ui->thermoBox->hide(); 185 ui->thermoBox->hide();
166 ui->logButton->hide(); 186 ui->logButton->hide();
167 } 187 }
168 } 188 }
169 189

mercurial