Skip to content

Commit

Permalink
Fields that should always have been optional in Water
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Young committed Apr 13, 2024
1 parent b97982f commit bae8543
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 65 deletions.
2 changes: 1 addition & 1 deletion src/BtTreeItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ QVariant BtTreeItem::dataWater(int column) {
case BtTreeItem::WaterColumn::Magnesium:
return QVariant(water->magnesium_ppm());
case BtTreeItem::WaterColumn::pH:
return QVariant(water->ph());
return water->ph() ? QVariant(*water->ph()) : QVariant();
default :
qWarning() << QString("BtTreeItem::dataWater Bad column: %1").arg(column);
}
Expand Down
6 changes: 3 additions & 3 deletions src/WaterDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,9 @@ void WaterDialog::setRecipe(Recipe *rec) {

if (this->m_base) {

m_mashRO = this->m_base->mashRo_pct();
m_mashRO = this->m_base->mashRo_pct().value_or(0.0);
spinBox_mashRO->setValue( QVariant(m_mashRO * 100).toInt());
m_spargeRO = this->m_base->spargeRo_pct();
m_spargeRO = this->m_base->spargeRo_pct().value_or(0.0);
spinBox_spargeRO->setValue( QVariant(m_spargeRO * 100).toInt());

baseProfileButton->setWater(this->m_base);
Expand Down Expand Up @@ -423,7 +423,7 @@ double WaterDialog::calculateRA() const {
double residual = 0.0;
if (this->m_base) {

double base_alk = ( 1.0 - m_base->mashRo_pct() ) * m_base->alkalinity_ppm();
double base_alk = ( 1.0 - m_base->mashRo_pct().value_or(0.0) ) * m_base->alkalinity_ppm().value_or(0.0);
if (!m_base->alkalinityAsHCO3()) {
base_alk = 1.22 * base_alk;
}
Expand Down
44 changes: 22 additions & 22 deletions src/model/Water.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,12 @@ Water::Water(QString name) :
m_chloride_ppm {0.0 },
m_sodium_ppm {0.0 },
m_magnesium_ppm {0.0 },
m_ph {0.0 },
m_alkalinity_ppm {0.0 },
m_ph {std::nullopt},
m_alkalinity_ppm {std::nullopt},
m_notes {"" },
m_type {std::nullopt},
m_mashRo_pct {0.0 },
m_spargeRo_pct {0.0 },
m_mashRo_pct {std::nullopt},
m_spargeRo_pct {std::nullopt},
m_alkalinity_as_hco3 {true },
// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
m_carbonate_ppm {std::nullopt},
Expand Down Expand Up @@ -292,13 +292,13 @@ double Water::sulfate_ppm () const { return
double Water::chloride_ppm () const { return m_chloride_ppm ; }
double Water::sodium_ppm () const { return m_sodium_ppm ; }
double Water::magnesium_ppm () const { return m_magnesium_ppm ; }
double Water::ph () const { return m_ph ; }
double Water::alkalinity_ppm () const { return m_alkalinity_ppm ; }
std::optional<double> Water::ph () const { return m_ph ; }
std::optional<double> Water::alkalinity_ppm () const { return m_alkalinity_ppm ; }
QString Water::notes () const { return m_notes ; }
std::optional<Water::Type> Water::type () const { return m_type ; }
std::optional<int> Water::typeAsInt () const { return Optional::toOptInt(m_type) ; }
double Water::mashRo_pct () const { return m_mashRo_pct ; }
double Water::spargeRo_pct () const { return m_spargeRo_pct ; }
std::optional<double> Water::mashRo_pct () const { return m_mashRo_pct ; }
std::optional<double> Water::spargeRo_pct () const { return m_spargeRo_pct ; }
bool Water::alkalinityAsHCO3() const { return m_alkalinity_as_hco3; }
// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
std::optional<double> Water::carbonate_ppm () const { return m_carbonate_ppm; }
Expand All @@ -310,20 +310,20 @@ std::optional<double> Water::flouride_ppm () const { return

//============================================= "SETTER" MEMBER FUNCTIONS ==============================================
///void Water::setAmount (double const val) { SET_AND_NOTIFY(PropertyNames::Water::amount , m_amount , val ); return; }
void Water::setCalcium_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::calcium_ppm , m_calcium_ppm , val); return; }
void Water::setBicarbonate_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::bicarbonate_ppm , m_bicarbonate_ppm , val); return; }
void Water::setSulfate_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::sulfate_ppm , m_sulfate_ppm , val); return; }
void Water::setChloride_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::chloride_ppm , m_chloride_ppm , val); return; }
void Water::setSodium_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::sodium_ppm , m_sodium_ppm , val); return; }
void Water::setMagnesium_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::magnesium_ppm , m_magnesium_ppm , val); return; }
void Water::setPh (double const val) { SET_AND_NOTIFY(PropertyNames::Water::ph , m_ph , val); return; }
void Water::setAlkalinity_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::alkalinity_ppm , m_alkalinity_ppm , val); return; }
void Water::setNotes (QString const & val) { SET_AND_NOTIFY(PropertyNames::Water::notes , m_notes , val); return; }
void Water::setType (std::optional<Type> const val) { SET_AND_NOTIFY(PropertyNames::Water::type , m_type , val); return; }
void Water::setTypeAsInt (std::optional<int> const val) { SET_AND_NOTIFY(PropertyNames::Water::type , m_type , Optional::fromOptInt<Type>(val)); return; }
void Water::setMashRo_pct (double const val) { SET_AND_NOTIFY(PropertyNames::Water::mashRo_pct , m_mashRo_pct , val); return; }
void Water::setSpargeRo_pct (double const val) { SET_AND_NOTIFY(PropertyNames::Water::spargeRo_pct , m_spargeRo_pct , val); return; }
void Water::setAlkalinityAsHCO3(bool const val) { SET_AND_NOTIFY(PropertyNames::Water::alkalinityAsHCO3, m_alkalinity_as_hco3, val); return; }
void Water::setCalcium_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::calcium_ppm , m_calcium_ppm , val); return; }
void Water::setBicarbonate_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::bicarbonate_ppm , m_bicarbonate_ppm , val); return; }
void Water::setSulfate_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::sulfate_ppm , m_sulfate_ppm , val); return; }
void Water::setChloride_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::chloride_ppm , m_chloride_ppm , val); return; }
void Water::setSodium_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::sodium_ppm , m_sodium_ppm , val); return; }
void Water::setMagnesium_ppm (double const val) { SET_AND_NOTIFY(PropertyNames::Water::magnesium_ppm , m_magnesium_ppm , val); return; }
void Water::setPh (std::optional<double> const val) { SET_AND_NOTIFY(PropertyNames::Water::ph , m_ph , val); return; }
void Water::setAlkalinity_ppm (std::optional<double> const val) { SET_AND_NOTIFY(PropertyNames::Water::alkalinity_ppm , m_alkalinity_ppm , val); return; }
void Water::setNotes (QString const & val) { SET_AND_NOTIFY(PropertyNames::Water::notes , m_notes , val); return; }
void Water::setType (std::optional<Type> const val) { SET_AND_NOTIFY(PropertyNames::Water::type , m_type , val); return; }
void Water::setTypeAsInt (std::optional<int> const val) { SET_AND_NOTIFY(PropertyNames::Water::type , m_type , Optional::fromOptInt<Type>(val)); return; }
void Water::setMashRo_pct (std::optional<double> const val) { SET_AND_NOTIFY(PropertyNames::Water::mashRo_pct , m_mashRo_pct , val); return; }
void Water::setSpargeRo_pct (std::optional<double> const val) { SET_AND_NOTIFY(PropertyNames::Water::spargeRo_pct , m_spargeRo_pct , val); return; }
void Water::setAlkalinityAsHCO3(bool const val) { SET_AND_NOTIFY(PropertyNames::Water::alkalinityAsHCO3, m_alkalinity_as_hco3, val); return; }
// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
void Water::setCarbonate_ppm (std::optional<double> const val) { SET_AND_NOTIFY(PropertyNames::Water::carbonate_ppm , m_carbonate_ppm , val); return; }
void Water::setPotassium_ppm (std::optional<double> const val) { SET_AND_NOTIFY(PropertyNames::Water::potassium_ppm , m_potassium_ppm , val); return; }
Expand Down
78 changes: 39 additions & 39 deletions src/model/Water.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ class Water : public OutlineableNamedEntity,
Q_PROPERTY(double sodium_ppm READ sodium_ppm WRITE setSodium_ppm)
//! \brief The ppm of magnesium. Required in BeerXML and BeerJSON.
Q_PROPERTY(double magnesium_ppm READ magnesium_ppm WRITE setMagnesium_ppm)
//! \brief The pH. ⮜⮜⮜ TODO: Optional in both BeerXML and BeerJSON. ⮞⮞⮞
Q_PROPERTY(double ph READ ph WRITE setPh)
//! \brief The pH. NB: Optional in both BeerXML and BeerJSON.
Q_PROPERTY(std::optional<double> ph READ ph WRITE setPh)
//! \brief The residual alkalinity. Units are ppm. NB: Not part of BeerXML or BeerJSON.
Q_PROPERTY(double alkalinity_ppm READ alkalinity_ppm WRITE setAlkalinity_ppm)
Q_PROPERTY(std::optional<double> alkalinity_ppm READ alkalinity_ppm WRITE setAlkalinity_ppm)
//! \brief The notes.
Q_PROPERTY(QString notes READ notes WRITE setNotes)
/**
Expand All @@ -171,11 +171,11 @@ class Water : public OutlineableNamedEntity,
* \c std::optional<int>, not \c std::optional<Type>
*/
Q_PROPERTY(std::optional<int> type READ typeAsInt WRITE setTypeAsInt)
//! \brief percent of the mash water that is RO (reverse osmosis)
Q_PROPERTY(double mashRo_pct READ mashRo_pct WRITE setMashRo_pct)
//! \brief percent of the sparge water that is RO (reverse osmosis)
Q_PROPERTY(double spargeRo_pct READ spargeRo_pct WRITE setSpargeRo_pct)
//! \brief is the alkalinity measured as HCO3 (bicarbonate) or CO3 (carbonate)?
//! \brief percent of the mash water that is RO (reverse osmosis) NB: Not part of BeerXML or BeerJSON
Q_PROPERTY(std::optional<double> mashRo_pct READ mashRo_pct WRITE setMashRo_pct)
//! \brief percent of the sparge water that is RO (reverse osmosis) NB: Not part of BeerXML or BeerJSON
Q_PROPERTY(std::optional<double> spargeRo_pct READ spargeRo_pct WRITE setSpargeRo_pct)
//! \brief is the alkalinity measured as HCO3 (bicarbonate) or CO3 (carbonate)? NB: Not part of BeerXML or BeerJSON
Q_PROPERTY(bool alkalinityAsHCO3 READ alkalinityAsHCO3 WRITE setAlkalinityAsHCO3)

// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
Expand All @@ -188,20 +188,20 @@ class Water : public OutlineableNamedEntity,

//============================================ "GETTER" MEMBER FUNCTIONS ============================================
/// double amount () const;
double calcium_ppm () const;
double bicarbonate_ppm () const;
double sulfate_ppm () const;
double chloride_ppm () const;
double sodium_ppm () const;
double magnesium_ppm () const;
double ph () const;
double alkalinity_ppm () const;
QString notes () const;
std::optional<Type> type () const;
std::optional<int> typeAsInt () const;
double mashRo_pct () const;
double spargeRo_pct () const;
bool alkalinityAsHCO3() const;
double calcium_ppm () const;
double bicarbonate_ppm () const;
double sulfate_ppm () const;
double chloride_ppm () const;
double sodium_ppm () const;
double magnesium_ppm () const;
std::optional<double> ph () const;
std::optional<double> alkalinity_ppm () const;
QString notes () const;
std::optional<Type> type () const;
std::optional<int> typeAsInt () const;
std::optional<double> mashRo_pct () const;
std::optional<double> spargeRo_pct () const;
bool alkalinityAsHCO3() const;
// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
std::optional<double> carbonate_ppm () const;
std::optional<double> potassium_ppm () const;
Expand All @@ -220,13 +220,13 @@ class Water : public OutlineableNamedEntity,
void setChloride_ppm (double const val);
void setSodium_ppm (double const val);
void setMagnesium_ppm (double const val);
void setPh (double const val);
void setAlkalinity_ppm (double const val);
void setPh (std::optional<double> const val);
void setAlkalinity_ppm (std::optional<double> const val);
void setNotes (QString const & val);
void setType (std::optional<Type> const val);
void setTypeAsInt (std::optional<int> const val);
void setMashRo_pct (double const val);
void setSpargeRo_pct (double const val);
void setMashRo_pct (std::optional<double> const val);
void setSpargeRo_pct (std::optional<double> const val);
void setAlkalinityAsHCO3(bool const val);

// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
Expand All @@ -247,19 +247,19 @@ class Water : public OutlineableNamedEntity,

private:
/// double m_amount ;
double m_calcium_ppm ;
double m_bicarbonate_ppm ;
double m_sulfate_ppm ;
double m_chloride_ppm ;
double m_sodium_ppm ;
double m_magnesium_ppm ;
double m_ph ;
double m_alkalinity_ppm ;
QString m_notes ;
std::optional<Type> m_type ;
double m_mashRo_pct ;
double m_spargeRo_pct ;
bool m_alkalinity_as_hco3;
double m_calcium_ppm ;
double m_bicarbonate_ppm ;
double m_sulfate_ppm ;
double m_chloride_ppm ;
double m_sodium_ppm ;
double m_magnesium_ppm ;
std::optional<double> m_ph ;
std::optional<double> m_alkalinity_ppm ;
QString m_notes ;
std::optional<Type> m_type ;
std::optional<double> m_mashRo_pct ;
std::optional<double> m_spargeRo_pct ;
bool m_alkalinity_as_hco3;
// ⮜⮜⮜ All below added for BeerJSON support ⮞⮞⮞
std::optional<double> m_carbonate_ppm ;
std::optional<double> m_potassium_ppm ;
Expand Down

0 comments on commit bae8543

Please sign in to comment.