Skip to content

Commit

Permalink
Show the display unit in the diagram layer with the parameter value (#…
Browse files Browse the repository at this point in the history
…7841)

Fixes #7765
  • Loading branch information
adeas31 committed Sep 1, 2021
1 parent 403eebc commit 29111b4
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 9 deletions.
31 changes: 23 additions & 8 deletions OMEdit/OMEditLIB/Annotations/TextAnnotation.cpp
Expand Up @@ -546,22 +546,37 @@ void TextAnnotation::updateTextStringHelper(QRegExp regExp)
*/
textValue = mpComponent->getRootParentComponent()->getParameterDisplayString(variable);
if (!textValue.isEmpty()) {
QString unit = "";
QString displaytUnit = "";
QString unit = mpComponent->getRootParentComponent()->getParameterModifierValue(variable, "unit");
QString displayUnit = mpComponent->getRootParentComponent()->getParameterModifierValue(variable, "displayUnit");
Element *pElement = mpComponent->getRootParentComponent()->getElementByName(variable);
if (pElement) {
displaytUnit = pElement->getDerivedClassModifierValue("displaytUnit");
if (displaytUnit.isEmpty()) {
if (displayUnit.isEmpty()) {
displayUnit = pElement->getDerivedClassModifierValue("displayUnit");
}
if (unit.isEmpty()) {
unit = pElement->getDerivedClassModifierValue("unit");
displaytUnit = unit;
}
// if display unit is still empty then use unit
if (displayUnit.isEmpty()) {
displayUnit = unit;
}
}
if (displaytUnit.isEmpty()) {
if (displayUnit.isEmpty() || unit.isEmpty()) {
mTextString.replace(pos, regExp.matchedLength(), textValue);
pos += textValue.length();
} else {
displaytUnit = Utilities::convertUnitToSymbol(displaytUnit);
QString textValueWithDisplayUnit = QString("%1 %2").arg(textValue, displaytUnit);
QString textValueWithDisplayUnit;
OMCProxy *pOMCProxy = MainWindow::instance()->getOMCProxy();
OMCInterface::convertUnits_res convertUnit = pOMCProxy->convertUnits(unit, displayUnit);
if (convertUnit.unitsCompatible) {
qreal convertedValue = Utilities::convertUnit(textValue.toDouble(), convertUnit.offset, convertUnit.scaleFactor);
textValue = StringHandler::number(convertedValue);
displayUnit = Utilities::convertUnitToSymbol(displayUnit);
textValueWithDisplayUnit = QString("%1 %2").arg(textValue, displayUnit);
} else {
unit = Utilities::convertUnitToSymbol(unit);
textValueWithDisplayUnit = QString("%1 %2").arg(textValue, unit);
}
mTextString.replace(pos, regExp.matchedLength(), textValueWithDisplayUnit);
pos += textValueWithDisplayUnit.length();
}
Expand Down
28 changes: 28 additions & 0 deletions OMEdit/OMEditLIB/Element/Element.cpp
Expand Up @@ -1497,6 +1497,34 @@ QString Element::getParameterDisplayString(QString parameterName)
return displayString;
}

/*!
* \brief Element::getParameterModifierValue
* Reads the component parameter modifier value.
* \param parameterName
* \param modifier
* \return
*/
QString Element::getParameterModifierValue(const QString &parameterName, const QString &modifier)
{
/* How to get the parameter modifier value,
* 1. Check if the value is available in component modifier.
*/
OMCProxy *pOMCProxy = MainWindow::instance()->getOMCProxy();
QString className = mpGraphicsView->getModelWidget()->getLibraryTreeItem()->getNameStructure();
QString parameterAndModiferName = QString("%1.%2").arg(parameterName).arg(modifier);
QString modifierValue = "";
/* case 1 */
QMap<QString, QString> modifiers = mpElementInfo->getModifiersMap(pOMCProxy, className, this);
QMap<QString, QString>::iterator modifiersIterator;
for (modifiersIterator = modifiers.begin(); modifiersIterator != modifiers.end(); ++modifiersIterator) {
if (parameterAndModiferName.compare(modifiersIterator.key()) == 0) {
modifierValue = modifiersIterator.value();
break;
}
}
return StringHandler::removeFirstLastQuotes(modifierValue);
}

/*!
* \brief Element::getDerivedClassModifierValue
* Used to fetch the values of unit and displayUnit.
Expand Down
1 change: 1 addition & 0 deletions OMEdit/OMEditLIB/Element/Element.h
Expand Up @@ -268,6 +268,7 @@ class Element : public QObject, public QGraphicsItem
void emitDeleted();
void componentParameterHasChanged();
QString getParameterDisplayString(QString parameterName);
QString getParameterModifierValue(const QString &parameterName, const QString &modifier);
QString getDerivedClassModifierValue(QString modifierName);
QString getInheritedDerivedClassModifierValue(Element *pElement, QString modifierName);
void shapeAdded();
Expand Down
2 changes: 1 addition & 1 deletion OMEdit/OMEditLIB/Plotting/VariablesWidget.cpp
Expand Up @@ -364,7 +364,7 @@ VariablesTreeModel::VariablesTreeModel(VariablesTreeView *pVariablesTreeView)
mpVariablesTreeView = pVariablesTreeView;
QVector<QVariant> headers;
headers << "" << "" << Helper::variables << Helper::variables << "" << tr("Value") << tr("Unit") << tr("Display Unit") <<
QStringList() << Helper::description << "" << false << QVariantList() << QVariantList() << QVariantList() << "dummy.json";
QStringList() << Helper::description << "" << false << QVariantList() << QVariantList() << QVariantList() << "dummy.json" << false;
mpRootVariablesTreeItem = new VariablesTreeItem(headers, 0, true);
mpActiveVariablesTreeItem = 0;
}
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditLIB/Util/Utilities.cpp
Expand Up @@ -1270,6 +1270,8 @@ QString Utilities::convertUnitToSymbol(const QString displayUnit)
{
if (displayUnit.compare(QStringLiteral("Ohm")) == 0) {
return QChar(937);
} else if (displayUnit.compare(QStringLiteral("degC")) == 0) {
return QString("%1C").arg(QChar(176));
} else {
return displayUnit;
}
Expand Down

0 comments on commit 29111b4

Please sign in to comment.