src/EditWater.cpp

changeset 236
d0b1640ba951
parent 90
2396457a8167
child 353
324a7268796b
--- a/src/EditWater.cpp	Sun May 22 11:23:28 2022 +0200
+++ b/src/EditWater.cpp	Mon May 23 14:16:44 2022 +0200
@@ -48,6 +48,7 @@
 	ui->alkalinityEdit->setValue(query.value(11).toDouble());
 	ui->inventoryEdit->setValue(query.value(12).toDouble());
 	ui->costEdit->setValue(query.value(13).toDouble());
+	ui->noEdit->setValue(query.value(15).toDouble());
     } else {
 	/* Set some defaults */
 	ui->phEdit->setValue(7.0);
@@ -66,6 +67,7 @@
     connect(ui->notesEdit, SIGNAL(textChanged()), this, SLOT(is_changed()));
     connect(ui->inventoryEdit, &QDoubleSpinBox::textChanged, this, &EditWater::is_changed);
     connect(ui->costEdit, &QDoubleSpinBox::textChanged, this, &EditWater::is_changed);
+    connect(ui->noEdit, &QDoubleSpinBox::textChanged, this, &EditWater::water_changed);
 
     ui->saveButton->setEnabled(false);
     ui->deleteButton->setEnabled((ui->inventoryEdit->value() == 0 && id >= 0) ? true:false);
@@ -114,11 +116,11 @@
     	if (this->recno == -1) {
     	    query.prepare("INSERT INTO inventory_waters SET name=:name, unlimited_stock=:unlimited, calcium=:ca, "
 		"bicarbonate=:hco, sulfate=:so4, chloride=:cl, sodium=:na, magnesium=:mg, ph=:ph, notes=:notes, "
-		"total_alkalinity=:alkalinity, inventory=:inventory, cost=:cost, uuid = :uuid");
+		"total_alkalinity=:alkalinity, inventory=:inventory, cost=:cost, nitrate=:no, uuid = :uuid");
     	} else {
 	    query.prepare("UPDATE inventory_waters SET name=:name, unlimited_stock=:unlimited, calcium=:ca, "
 		"bicarbonate=:hco, sulfate=:so4, chloride=:cl, sodium=:na, magnesium=:mg, ph=:ph, notes=:notes, "
-                "total_alkalinity=:alkalinity, inventory=:inventory, cost=:cost WHERE record = :recno");
+                "total_alkalinity=:alkalinity, inventory=:inventory, cost=:cost, nitrate=:no WHERE record = :recno");
     	}
 	query.bindValue(":name", ui->nameEdit->text());
 	query.bindValue(":unlimited", ui->unlimitedEdit->isChecked() ? 1:0);
@@ -133,6 +135,7 @@
 	query.bindValue(":alkalinity", QString("%1").arg(ui->alkalinityEdit->value(), 2, 'f', 1, '0'));
 	query.bindValue(":inventory", QString("%1").arg(ui->inventoryEdit->value(), 2, 'f', 1, '0'));
 	query.bindValue(":cost", QString("%1").arg(ui->costEdit->value(), 6, 'f', 5, '0'));
+	query.bindValue(":no", QString("%1").arg(ui->noEdit->value(), 3, 'f', 2, '0'));
 	if (this->recno == -1) {
 	    query.bindValue(":uuid", QUuid::createUuid().toString().mid(1, 36));
 	} else {
@@ -184,10 +187,16 @@
 {
     double cations, anions, balance;
 
+    double CaCO3 = ui->hcoEdit->value() / 1.22;
+    double pH = ui->phEdit->value();
+    double CO3 = ((CaCO3 / 50) / (1+(2* pow(10, pH - 10.33))) * pow(10, pH - 10.33)) * 60;
     cations = (ui->caEdit->value() / 20.039) + (ui->mgEdit->value() / 12.1525) + (ui->naEdit->value() / 22.989);
-    anions = (ui->hcoEdit->value() / 61.016) + (ui->so4Edit->value() / 48.031) + (ui->clEdit->value() / 35.4527);
+    anions = (ui->hcoEdit->value() / 61.016) + (CO3 / 30) + (ui->so4Edit->value() / 48.031) +
+	     (ui->clEdit->value() / 35.4527) + (ui->noEdit->value() / 62.0049);
     balance = round((cations - anions) * 100) / 100;
     ui->balanceEdit->setValue(balance);
+    ui->co3Edit->setValue(CO3);
+    //qDebug() << A13 << B13 << CO3;
 
     if (balance <= 0.1 && balance >= -0.1) {
 	ui->balanceIcon->setPixmap(QPixmap(":icons/silk/tick.png"));

mercurial