Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,186 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* HMI Plugin for ParticipantManagement - Party Overview Model
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Patric Karwat, SLSE, 2016-11-11
|
||||
*/
|
||||
|
||||
#include "ppm_party_model.h"
|
||||
#include <OperatorManagement/opm_data_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
#include <LtsSession/lts_session_data.h>
|
||||
#include <ParticipantManagement/ppm_translation.h>
|
||||
#include <QColor>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
||||
namespace ParticipantManagement
|
||||
{
|
||||
//---------------------------------
|
||||
// PartyModel
|
||||
//---------------------------------
|
||||
PartyModel::PartyModel(QObject *parent)
|
||||
: LtsWidgets::LtsAbstractTableModel<ParticipantManagement::Party>({tr("Id"),
|
||||
tr("Name"),
|
||||
tr("Color"),
|
||||
tr("Faded Color"),
|
||||
tr("Role"),
|
||||
tr("Is Used"),
|
||||
tr("Is SAA connected"),
|
||||
tr("SAA Name"),
|
||||
tr("Szenar Name")},
|
||||
parent)
|
||||
, m_ppmDtc(nullptr)
|
||||
, m_logger(getLogger("PartyModel"))
|
||||
{}
|
||||
|
||||
bool PartyModel::initModel(LtsSession::LtsSession *session)
|
||||
{
|
||||
m_session = session;
|
||||
if (!m_session->getDtc<ParticipantManagement::DataInterface>(m_ppmDtc))
|
||||
{
|
||||
ERROR_LOG(m_logger)<<" Couldn't load ppmDtc!!! ";
|
||||
return false;
|
||||
}
|
||||
if (!m_session->getDtc<OperatorManagement::DataInterface>(m_opmDtc))
|
||||
{
|
||||
ERROR_LOG(m_logger)<<" Couldn't load opmDtc!!! ";
|
||||
return false;
|
||||
}
|
||||
|
||||
connect(m_ppmDtc.get(), &ParticipantManagement::Interface::Dtc::partyChanged ,
|
||||
this, &PartyModel::onDataChanged);
|
||||
|
||||
m_operatorId = LtsSessionData::LtsSessionData::getInstance()->getOperatorId();
|
||||
m_ppmDtc->partys([this](const ParticipantManagement::Party &party)
|
||||
{
|
||||
if (hasParty(party)) // opm_operator_exercise -> visible_parties
|
||||
insertRow(party);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QVariant PartyModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
if (!indexIsValid(index))
|
||||
return QVariant();
|
||||
|
||||
const ParticipantManagement::Party &party = m_vecData.at(index.row());
|
||||
if (role == Qt::BackgroundRole)
|
||||
{
|
||||
switch(index.column())
|
||||
{
|
||||
case Color:
|
||||
return QColor::fromRgb(QRgb(party.color()));
|
||||
case FadedColor:
|
||||
return QColor::fromRgb(QRgb(party.fadingColor()));
|
||||
}
|
||||
}
|
||||
|
||||
if (role == Qt::DisplayRole)
|
||||
{
|
||||
switch (index.column())
|
||||
{
|
||||
case Id:
|
||||
return party.id();
|
||||
case Name:
|
||||
return ParticipantManagement::trPartyName(party.name());
|
||||
case Color:
|
||||
return QVariant();
|
||||
case FadedColor:
|
||||
return QVariant();
|
||||
case Role:
|
||||
return ParticipantManagement::toString(party.role());
|
||||
case IsUsedBy:
|
||||
return party.isUsedBy() ? tr("Yes") : tr("No");
|
||||
case IsSaaConnected:
|
||||
{
|
||||
if ( party.properties().empty())
|
||||
return false;
|
||||
|
||||
ParticipantManagement::ConnectState status = m_ppmDtc->saaConnectedState(party.id());
|
||||
QString connectState;
|
||||
switch (status.underlying())
|
||||
{
|
||||
case ParticipantManagement::ConnectState::Connected:
|
||||
connectState = tr("Connected");
|
||||
break;
|
||||
case ParticipantManagement::ConnectState::NoHeartbeat:
|
||||
connectState = tr("No Heartbeat");
|
||||
break;
|
||||
default:
|
||||
connectState = QStringLiteral("");
|
||||
break;
|
||||
}
|
||||
return connectState;
|
||||
}
|
||||
case SaaName:
|
||||
{
|
||||
if ( party.properties().empty())
|
||||
return QString{};
|
||||
const QJsonObject properties(QJsonDocument::fromJson(QByteArray::fromStdString(party.properties())).object());
|
||||
if (!properties.contains(QStringLiteral("Adler")) )
|
||||
return QString{};
|
||||
const QJsonObject adlerObj = properties[QStringLiteral("Adler")].toObject();
|
||||
QString saaName;
|
||||
if (adlerObj.contains(QStringLiteral("saaName")) )
|
||||
saaName.append(adlerObj[QStringLiteral("saaName")].toString());
|
||||
if (adlerObj.contains(QStringLiteral("isVerbund")) && !saaName.isEmpty())
|
||||
saaName.append(QStringLiteral(" (") + (adlerObj[QStringLiteral("isVerbund")].toBool() ? tr("Verbund") : tr("Standalone")) + QStringLiteral(")"));
|
||||
return saaName;
|
||||
}
|
||||
case SzenarName:
|
||||
{
|
||||
if ( party.properties().empty())
|
||||
return QString{};
|
||||
const QJsonObject properties(QJsonDocument::fromJson(QByteArray::fromStdString(party.properties())).object());
|
||||
if (!properties.contains(QStringLiteral("Adler")) )
|
||||
return QString{};
|
||||
const QJsonObject adlerObj = properties[QStringLiteral("Adler")].toObject();
|
||||
if (adlerObj.contains(QStringLiteral("szenarName")) )
|
||||
return adlerObj[QStringLiteral("szenarName")].toString();
|
||||
return QString{};
|
||||
}
|
||||
}
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
bool PartyModel::hasParty(const Party &party) const
|
||||
{
|
||||
const auto visiblePartiesByExercise = m_opmDtc->user(m_operatorId).visiblePartiesByExercise();
|
||||
|
||||
for (const auto &exerciseParties : visiblePartiesByExercise)
|
||||
{
|
||||
if (exerciseParties.exerciseId() != m_session->exerciseId())
|
||||
continue;
|
||||
if (!exerciseParties.visibleParties().is_set()) //has_value not support on windows yet so we need depricated is_set
|
||||
return false;
|
||||
for (const auto &partyId : exerciseParties.visibleParties().get())
|
||||
if (partyId == party.id())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PartyModel::isPartyHidden(const Party &party) const
|
||||
{ const auto visiblePartiesByExercise = m_opmDtc->user(m_operatorId).visiblePartiesByExercise();
|
||||
|
||||
for (const auto &exerciseParties : visiblePartiesByExercise)
|
||||
{
|
||||
if (exerciseParties.exerciseId() != m_session->exerciseId())
|
||||
continue;
|
||||
if (!exerciseParties.hiddenParties().is_set()) //has_value not support on windows yet so we need depricated is_set
|
||||
return false;
|
||||
for (const auto &partyId : exerciseParties.hiddenParties().get())
|
||||
if (partyId == party.id())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} // namespace ParticipantManagement
|
||||
Reference in new issue
Block a user