mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
T658, matching script for network entry
This commit is contained in:
committed by
Mat Sutcliffe
parent
fd281a464c
commit
cec768b9a4
@@ -4,7 +4,13 @@ function() {
|
||||
// reverseModel
|
||||
// returnObject
|
||||
returnObject.aircraftIcao = "C172";
|
||||
return "Changed ICAO to C172";
|
||||
returnObject.modified = true;
|
||||
returnObject.logMessage = "Changed to C172";
|
||||
|
||||
return returnObject;
|
||||
|
||||
// string return is possible
|
||||
// return "Changed ICAO to C172";
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -311,20 +311,10 @@ namespace BlackCore
|
||||
static const QString logFile = CFileUtils::appendFilePaths(CDirectoryUtils::logDirectory(), "logMatchingSriptEntry.log");
|
||||
QJSEngine engine;
|
||||
// engine.installExtensions(QJSEngine::ConsoleExtension);
|
||||
QJSValue jsMetaObject = engine.newQMetaObject(&MSSwiftValues::staticMetaObject);
|
||||
static const QJSValue jsMetaObject = engine.newQMetaObject(&MSSwiftValues::staticMetaObject);
|
||||
engine.globalObject().setProperty("SwiftValues", jsMetaObject);
|
||||
MSSwiftValues networkObject(
|
||||
callsign.asString(),
|
||||
inAircraftIcao.getDesignator(), inAircraftIcao.getDbKey(),
|
||||
inAirlineIcao.getDesignator(), inAirlineIcao.getDbKey(),
|
||||
inLivery.getCombinedCode(), inLivery.getDbKey()
|
||||
);
|
||||
MSSwiftValues reverseModel(
|
||||
inModel.getCallsign().asString(),
|
||||
inModel.getAircraftIcaoCode().getDesignator(), inModel.getAircraftIcaoCode().getDbKey(),
|
||||
inModel.getAirlineIcaoCode().getDesignator(), inModel.getAirlineIcaoCode().getDbKey(),
|
||||
inModel.getLivery().getCombinedCode(), inModel.getLivery().getDbKey()
|
||||
);
|
||||
MSSwiftValues networkObject(callsign.asString(), inAircraftIcao, inLivery);
|
||||
MSSwiftValues reverseModel(callsign.asString(), inAircraftIcao, inLivery);
|
||||
MSSwiftValues returnObject;
|
||||
|
||||
QJSValue jsNetworkObject = engine.newQObject(&networkObject);
|
||||
@@ -334,6 +324,7 @@ namespace BlackCore
|
||||
QJSValue jsReturnObject = engine.newQObject(&returnObject);
|
||||
engine.globalObject().setProperty("returnObject", jsNetworkObject);
|
||||
|
||||
QString logMessage;
|
||||
QJSValue ms = engine.evaluate(js, logFile);
|
||||
ms = ms.call();
|
||||
if (ms.isError())
|
||||
@@ -344,22 +335,33 @@ namespace BlackCore
|
||||
}
|
||||
else
|
||||
{
|
||||
QString logMessage;
|
||||
if (ms.isQObject())
|
||||
{
|
||||
// reverseModel = ms.toQ
|
||||
const MSSwiftValues *reverseModelProcessed = qobject_cast<const MSSwiftValues *>(ms.toQObject());
|
||||
logMessage = reverseModelProcessed->getLogMessage();
|
||||
if (!reverseModelProcessed->isModified()) { break; }
|
||||
|
||||
// changed
|
||||
if (reverseModel.hasChangedAircraftIcao(inAircraftIcao))
|
||||
{
|
||||
CAircraftIcaoCode icao;
|
||||
if (log) { CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Matching script: '%1' -> '%2'").arg(inAircraftIcao.getDesignatorDbKey(), icao.getDesignatorDbKey())); }
|
||||
}
|
||||
|
||||
if (reverseModel.hasChangedAirlineIcao(inAirlineIcao))
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
else if (ms.isString())
|
||||
{
|
||||
logMessage = ms.toString();
|
||||
}
|
||||
|
||||
if (!logMessage.isEmpty())
|
||||
{
|
||||
CLogMessage(getLogCategories()).info(u"Matching script: '%1'") << logMessage;
|
||||
}
|
||||
}
|
||||
|
||||
// log message
|
||||
if (log && !logMessage.isEmpty()) { CMatchingUtils::addLogDetailsToList(log, callsign, QStringLiteral("Matching script: '%1'").arg(logMessage)); }
|
||||
|
||||
// end this
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "blackgui/guiutility.h"
|
||||
#include "blackcore/webdataservices.h"
|
||||
#include "blackmisc/simulation/data/modelcaches.h"
|
||||
#include "blackmisc/simulation/matchingutils.h"
|
||||
#include "blackmisc/aviation/aircrafticaocode.h"
|
||||
#include "blackmisc/aviation/airlineicaocode.h"
|
||||
#include "blackmisc/aviation/callsign.h"
|
||||
@@ -175,9 +176,23 @@ namespace BlackGui
|
||||
ui->te_Results->clear();
|
||||
CStatusMessageList msgs;
|
||||
m_matcher.setDefaultModel(CModelMatcherComponent::defaultModel());
|
||||
|
||||
const CAircraftMatcherSetup setup = m_matcher.getSetup();
|
||||
const CSimulatedAircraft remoteAircraft(createAircraft());
|
||||
const QString livery(ui->comp_LiverySelector->getRawCombinedCode());
|
||||
const CAircraftModel matched = CAircraftMatcher::reverseLookupModel(remoteAircraft.getModel(), livery, &msgs);
|
||||
|
||||
// Script
|
||||
CAircraftModel matchedWithScript = matched;
|
||||
if (setup.doRunMsNetworkEntryScript())
|
||||
{
|
||||
matchedWithScript = CAircraftMatcher::networkEntryScript(matched, setup, &msgs);
|
||||
}
|
||||
else
|
||||
{
|
||||
CMatchingUtils::addLogDetailsToList(&msgs, remoteAircraft.getCallsign(), QStringLiteral("No entry script used"));
|
||||
}
|
||||
|
||||
ui->te_Results->setText(matched.toQString(true));
|
||||
ui->tvp_ResultMessages->updateContainer(msgs);
|
||||
}
|
||||
|
||||
@@ -8,10 +8,42 @@
|
||||
|
||||
#include "matchingscript.h"
|
||||
|
||||
using namespace BlackMisc::Aviation;
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Simulation
|
||||
{
|
||||
MSSwiftValues::MSSwiftValues(
|
||||
const QString &cs,
|
||||
const CAircraftIcaoCode aircraftIcao,
|
||||
const CAirlineIcaoCode airlineIcao,
|
||||
const QString &livery, int liveryId) :
|
||||
MSSwiftValues(cs,
|
||||
aircraftIcao.getDesignator(), aircraftIcao.getDbKey(),
|
||||
airlineIcao.getDesignator(), airlineIcao.getVDesignator(), airlineIcao.getDbKey(),
|
||||
livery, liveryId)
|
||||
{ }
|
||||
|
||||
MSSwiftValues::MSSwiftValues(
|
||||
const QString &cs,
|
||||
const CAircraftIcaoCode aircraftIcao,
|
||||
const CLivery livery) :
|
||||
MSSwiftValues(cs,
|
||||
aircraftIcao,
|
||||
livery.getAirlineIcaoCode(),
|
||||
livery.getCombinedCode(), livery.getDbKey())
|
||||
{ }
|
||||
|
||||
MSSwiftValues::MSSwiftValues(const MSSwiftValues &sv) :
|
||||
MSSwiftValues(sv.m_callsign,
|
||||
sv.getAircraftIcao(), sv.getDbAircraftIcaoId(),
|
||||
sv.getAirlineIcao(), sv.getVirtualAirlineIcao(), sv.getDbAirlineIcaoId(),
|
||||
sv.getLivery(), sv.getDbLiveryId(),
|
||||
sv.m_logMessage,
|
||||
sv.isModified(), sv.isRerun())
|
||||
{ }
|
||||
|
||||
void MSSwiftValues::setCallsign(const QString &callsign)
|
||||
{
|
||||
if (m_callsign == callsign) { return; }
|
||||
@@ -54,6 +86,13 @@ namespace BlackMisc
|
||||
emit this->airlineIcaoChanged();
|
||||
}
|
||||
|
||||
void MSSwiftValues::setVirtualAirlineIcao(const QString &virtualAirlineIcao)
|
||||
{
|
||||
if (virtualAirlineIcao == m_vAirlineIcao) { return; }
|
||||
m_vAirlineIcao = virtualAirlineIcao;
|
||||
emit this->virtualAirlineIcaoChanged();
|
||||
}
|
||||
|
||||
void MSSwiftValues::setLivery(const QString &livery)
|
||||
{
|
||||
if (livery == m_livery) { return; }
|
||||
@@ -82,5 +121,20 @@ namespace BlackMisc
|
||||
emit this->rerunChanged();
|
||||
}
|
||||
|
||||
bool MSSwiftValues::hasChangedAircraftIcao(const Aviation::CAircraftIcaoCode &aircraftIcao) const
|
||||
{
|
||||
if (aircraftIcao.hasValidDbKey() && aircraftIcao.getDbKey() != m_dbAircraftIcaoId) { return true; }
|
||||
if (aircraftIcao.hasDesignator() && aircraftIcao.getDesignator() != m_aircraftIcao) { return true; }
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MSSwiftValues::hasChangedAirlineIcao(const Aviation::CAirlineIcaoCode &airlineIcao) const
|
||||
{
|
||||
if (airlineIcao.hasValidDbKey() && airlineIcao.getDbKey() != m_dbAirlineIcaoId) { return true; }
|
||||
if (airlineIcao.hasValidDesignator() && airlineIcao.getDesignator() != m_airlineIcao) { return true; }
|
||||
if (airlineIcao.hasValidDesignator() && airlineIcao.getVDesignator() != m_vAirlineIcao) { return true; }
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
#ifndef BLACKMISC_SIMULATION_MATCHINGSCRIPT_H
|
||||
#define BLACKMISC_SIMULATION_MATCHINGSCRIPT_H
|
||||
|
||||
#include "blackmisc/aviation/aircrafticaocode.h"
|
||||
#include "blackmisc/aviation/livery.h"
|
||||
#include "blackmisc/aviation/airlineicaocode.h"
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
|
||||
#include <QString>
|
||||
@@ -26,16 +29,17 @@ namespace BlackMisc
|
||||
Q_OBJECT
|
||||
|
||||
//! MSNetworkValues properties @{
|
||||
Q_PROPERTY(QString callsign READ getCallsign WRITE setCallsign NOTIFY callsignChanged)
|
||||
Q_PROPERTY(int dbAircraftIcaoId READ getDbAircraftIcaoId WRITE setDbAircraftIcaoId NOTIFY dbAircraftIcaoIdChanged)
|
||||
Q_PROPERTY(int dbAirlineIcaoId READ getDbAirlineIcaoId WRITE setDbAirlineIcaoId NOTIFY dbAirlineIcaoIdChanged)
|
||||
Q_PROPERTY(int dbLiveryId READ getDbLiveryId WRITE setDbLiveryId NOTIFY dbLiveryIdChanged)
|
||||
Q_PROPERTY(QString aircraftIcao READ getAircraftIcao WRITE setAircraftIcao NOTIFY aircraftIcaoChanged)
|
||||
Q_PROPERTY(QString airlineIcao READ getAirlineIcao WRITE setAirlineIcao NOTIFY airlineIcaoChanged)
|
||||
Q_PROPERTY(QString livery READ getLivery WRITE setLivery NOTIFY liveryChanged)
|
||||
Q_PROPERTY(QString logMessage READ getLogMessage WRITE setLogMessage NOTIFY logMessageChanged)
|
||||
Q_PROPERTY(bool modified READ isModified WRITE setModified NOTIFY modifiedChanged)
|
||||
Q_PROPERTY(bool rerun READ isRerun WRITE setRerun NOTIFY rerunChanged)
|
||||
Q_PROPERTY(QString callsign READ getCallsign WRITE setCallsign NOTIFY callsignChanged)
|
||||
Q_PROPERTY(int dbAircraftIcaoId READ getDbAircraftIcaoId WRITE setDbAircraftIcaoId NOTIFY dbAircraftIcaoIdChanged)
|
||||
Q_PROPERTY(int dbAirlineIcaoId READ getDbAirlineIcaoId WRITE setDbAirlineIcaoId NOTIFY dbAirlineIcaoIdChanged)
|
||||
Q_PROPERTY(int dbLiveryId READ getDbLiveryId WRITE setDbLiveryId NOTIFY dbLiveryIdChanged)
|
||||
Q_PROPERTY(QString aircraftIcao READ getAircraftIcao WRITE setAircraftIcao NOTIFY aircraftIcaoChanged)
|
||||
Q_PROPERTY(QString airlineIcao READ getAirlineIcao WRITE setAirlineIcao NOTIFY airlineIcaoChanged)
|
||||
Q_PROPERTY(QString virtualAirlineIcao READ getVirtualAirlineIcao WRITE setVirtualAirlineIcao NOTIFY virtualAirlineIcaoChanged)
|
||||
Q_PROPERTY(QString livery READ getLivery WRITE setLivery NOTIFY liveryChanged)
|
||||
Q_PROPERTY(QString logMessage READ getLogMessage WRITE setLogMessage NOTIFY logMessageChanged)
|
||||
Q_PROPERTY(bool modified READ isModified WRITE setModified NOTIFY modifiedChanged)
|
||||
Q_PROPERTY(bool rerun READ isRerun WRITE setRerun NOTIFY rerunChanged)
|
||||
//! @}
|
||||
|
||||
public:
|
||||
@@ -45,15 +49,33 @@ namespace BlackMisc
|
||||
//! Ctor
|
||||
Q_INVOKABLE MSSwiftValues(const QString &cs,
|
||||
const QString &aircraftIcao, int idAircraftIcao,
|
||||
const QString &airlineIcao, int idAirlineIcao,
|
||||
const QString &livery, int liveryId) :
|
||||
const QString &airlineIcao, const QString &virtualAirlineIcao, int idAirlineIcao,
|
||||
const QString &livery, int liveryId,
|
||||
const QString &logMsg = {},
|
||||
bool modified = false, bool rerun = false) :
|
||||
m_callsign(cs.trimmed().toUpper()),
|
||||
m_aircraftIcao(aircraftIcao.trimmed().toUpper()),
|
||||
m_airlineIcao(airlineIcao.trimmed().toUpper()),
|
||||
m_airlineIcao(airlineIcao.trimmed().toUpper()), m_vAirlineIcao(virtualAirlineIcao),
|
||||
m_livery(livery.trimmed().toUpper()),
|
||||
m_dbAircraftIcaoId(idAircraftIcao), m_dbAirlineIcaoId(idAirlineIcao), m_dbLiveryId(liveryId)
|
||||
m_dbAircraftIcaoId(idAircraftIcao), m_dbAirlineIcaoId(idAirlineIcao), m_dbLiveryId(liveryId),
|
||||
m_logMessage(logMsg),
|
||||
m_modified(modified), m_rerun(rerun)
|
||||
{}
|
||||
|
||||
//! Ctor
|
||||
MSSwiftValues(const QString &cs,
|
||||
const BlackMisc::Aviation::CAircraftIcaoCode aircraftIcao,
|
||||
const BlackMisc::Aviation::CAirlineIcaoCode airlineIcao,
|
||||
const QString &livery, int liveryId);
|
||||
|
||||
//! Ctor
|
||||
MSSwiftValues(const QString &cs,
|
||||
const BlackMisc::Aviation::CAircraftIcaoCode aircraftIcao,
|
||||
const BlackMisc::Aviation::CLivery livery);
|
||||
|
||||
//! Ctor
|
||||
MSSwiftValues(const MSSwiftValues &sv);
|
||||
|
||||
//! Get callsign
|
||||
const QString &getCallsign() const { return m_callsign; }
|
||||
|
||||
@@ -64,20 +86,22 @@ namespace BlackMisc
|
||||
bool isFoundDbAircraftIcao() const { return m_dbAircraftIcaoId >= 0; }
|
||||
bool isFoundDbAirlineIcao() const { return m_dbAirlineIcaoId >= 0; }
|
||||
bool isFoundDbLivery() const { return m_dbLiveryId >= 0; }
|
||||
int getDbAircraftIcaoId() const { return m_dbAircraftIcaoId; }
|
||||
int getDbAirlineIcaoId() const { return m_dbAirlineIcaoId; }
|
||||
int getDbLiveryId() const { return m_dbLiveryId; }
|
||||
int getDbAircraftIcaoId() const { return m_dbAircraftIcaoId; }
|
||||
int getDbAirlineIcaoId() const { return m_dbAirlineIcaoId; }
|
||||
int getDbLiveryId() const { return m_dbLiveryId; }
|
||||
void setDbAircraftIcaoId(int id);
|
||||
void setDbAirlineIcaoId(int id);
|
||||
void setDbLiveryId(int id);
|
||||
//! @}
|
||||
|
||||
//! Livery, airline, aircraft @{
|
||||
const QString &getAircraftIcao() const { return m_aircraftIcao; }
|
||||
const QString &getAirlineIcao() const { return m_airlineIcao; }
|
||||
const QString &getLivery() const { return m_livery; }
|
||||
const QString &getAircraftIcao() const { return m_aircraftIcao; }
|
||||
const QString &getAirlineIcao() const { return m_airlineIcao; }
|
||||
const QString &getVirtualAirlineIcao() const { return m_vAirlineIcao; }
|
||||
const QString &getLivery() const { return m_livery; }
|
||||
void setAircraftIcao(const QString &aircraftIcao);
|
||||
void setAirlineIcao(const QString &airlineIcao);
|
||||
void setVirtualAirlineIcao(const QString &virtualAirlineIcao);
|
||||
void setLivery(const QString &livery);
|
||||
//! @}
|
||||
|
||||
@@ -96,6 +120,11 @@ namespace BlackMisc
|
||||
void setRerun(bool rerun);
|
||||
//! @}
|
||||
|
||||
//! Changed values @{
|
||||
bool hasChangedAircraftIcao(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcao) const;
|
||||
bool hasChangedAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao) const;
|
||||
//! }
|
||||
|
||||
signals:
|
||||
//! Callsign changed
|
||||
void callsignChanged();
|
||||
@@ -103,6 +132,7 @@ namespace BlackMisc
|
||||
//! Livery, airline, aircraft changed @{
|
||||
void aircraftIcaoChanged();
|
||||
void airlineIcaoChanged();
|
||||
void virtualAirlineIcaoChanged();
|
||||
void liveryChanged();
|
||||
//! @}
|
||||
|
||||
@@ -125,11 +155,12 @@ namespace BlackMisc
|
||||
QString m_callsign;
|
||||
QString m_aircraftIcao;
|
||||
QString m_airlineIcao;
|
||||
QString m_vAirlineIcao;
|
||||
QString m_livery;
|
||||
QString m_logMessage;
|
||||
int m_dbAircraftIcaoId = -1;
|
||||
int m_dbAirlineIcaoId = -1;
|
||||
int m_dbLiveryId = -1;
|
||||
QString m_logMessage;
|
||||
bool m_modified = false;
|
||||
bool m_rerun = false;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user