Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions Interfaces/ORM/intfI18N.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,34 @@ intfSQLBasedModule(
tblI18N::Private::Indexes
) { ; }

QString intfI18N::translated(
INTFAPICALLBOOM_IMPL &APICALLBOOM_PARAM,
const QString &_key
) {
auto Data = this->makeSelectQuery(APICALLBOOM_PARAM)
.addCol(tblI18N::Fields::i18nKey)
.addCol(DBExpression::VALUE(QString("COALESCE("
"JSON_UNQUOTE(JSON_EXTRACT(%1.%2, '$.%3')),"
"JSON_UNQUOTE(JSON_EXTRACT(%1.%2, '$.default')),"
"'%4')")
.arg(tblI18N::Name)
.arg(tblI18N::Fields::i18nValue)
.arg(APICALLBOOM_PARAM.language())
.arg(_key)
),
"Translated")
.where({ tblI18N::Fields::i18nKey,
enuConditionOperator::Equal,
_key
})
.tryOne();

if (Data.isEmpty())
return _key;

return Data["Translated"].toString().trimmed();
}

QVariant IMPL_ORMGET_ANONYMOUSE(intfI18N) {
return this->Select(GET_METHOD_ARGS_CALL_VALUES);
}
Expand Down
5 changes: 5 additions & 0 deletions Interfaces/ORM/intfI18N.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ class intfI18N : public intfSQLBasedModule
const QString &_schema
);

public:
QString translated(
INTFAPICALLBOOM_DECL &APICALLBOOM_PARAM,
const QString &_key);

private slots:
QVariant ORMGET_ANONYMOUSE("Get I18N")
};
Expand Down
153 changes: 110 additions & 43 deletions ModuleHelpers/MT/Interfaces/intfMTCharts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,14 @@ QVariant baseintfMTCharts::getSchema(
) {
///@TODO: read from tblConfigurations

Targoman::API::ORM::intfI18N* I18N;
if (dynamic_cast<intfMTModule<false>*>(this->parentModule()))
I18N = dynamic_cast<intfMTModule<false>*>(this->parentModule())->i18n();
else
I18N = dynamic_cast<intfMTModule<true>*>(this->parentModule())->i18n();

QVariantMap RemainingCreditPercentageCharts = {
{ "title", "Remaining credit percentage" },
{ "title", I18N->translated(APICALLBOOM_PARAM, "Remaining credit percentage") },
{ "type", "multiprogress" },
{ "charts", QVariantMap({
{ "%%ITERATION%%", QVariantMap({
Expand All @@ -349,7 +355,7 @@ QVariant baseintfMTCharts::getSchema(
};

QVariantMap Charts = {
{ "title", "MT Charts" },
{ "title", I18N->translated(APICALLBOOM_PARAM, "MT Charts") },
{ "charts", QVariantList({
RemainingCreditPercentageCharts,
}) }
Expand Down Expand Up @@ -622,31 +628,6 @@ QVariant baseintfMTCharts::usageDataForProgressBar(
quint64 _actorID,
QString _key
) {
// return QVariantMap({
// { "type", "multiprogress" },
// { "series", QVariantMap({
// { "MT_FORMAL", QVariantMap({
// { "label", "رسمی" },
// { "props", QVariantMap({
// { "valueSuffix", "%" }
// }) },
// }) },
// { "MT_INFORMAL", QVariantMap({
// { "label", "محاوره" },
// { "props", QVariantMap({
// { "valueSuffix", "%" }
// }) },
// }) },
// }) },
// { "data", QVariantMap({
// { "MT_FORMAL", QVariantList({
// 30,
// 40
// }) },
// { "MT_INFORMAL", 60 },
// }) },
// });

baseintfAccountingBasedModule* ParentModule = dynamic_cast<baseintfAccountingBasedModule*>(this->parentModule());

//credits
Expand All @@ -671,7 +652,9 @@ QVariant baseintfMTCharts::usageDataForProgressBar(
)
;

TAPI::stuTable Table = SelectQuery.pageSize(0).all();
TAPI::stuTable Table = SelectQuery
.pageSize(0)
.all();

if (Table.Rows.count() == 0)
return {};
Expand Down Expand Up @@ -731,12 +714,25 @@ QVariant baseintfMTCharts::usageDataForProgressBar(
// QString Schema = getSchema(APICALLBOOM_PARAM, _key).toString();
// QStringList ChartPaths = extract from schema

QStringList FullKeys;
QStringList Engines;
QStringList Classes;
QStringList Directions;

for (auto it = CreditUsageRemained.begin();
it != CreditUsageRemained.end();
++it
) {
///@TODO: remove item if not exists in schema

//----------
FullKeys.append(it.key());
auto Parts = it.key().split("::");
if (Parts.length() >= 3) Directions.append(Parts[2]);
if (Parts.length() >= 2) Classes.append(Parts[1]);
if (Parts.length() >= 1) Engines.append(Parts[0]);

//----------
if ((it->Credit == -1) || (it->Usage == 0))
continue;

Expand All @@ -745,21 +741,59 @@ QVariant baseintfMTCharts::usageDataForProgressBar(

//output
//------------------------------------------------
// Targoman::API::ORM::intfI18N* I18N;
// if (dynamic_cast<intfMTModule<false>*>(this->parentModule()))
// I18N = dynamic_cast<intfMTModule<false>*>(this->parentModule())->i18n();
// else
// I18N = dynamic_cast<intfMTModule<true>*>(this->parentModule())->i18n();

// auto I18NRows = I18N->makeSelectQuery(APICALLBOOM_PARAM)
// .where({ tblI18N::Fields::i18nKey,
// enuConditionOperator::In,
// "'" + CreditUsageRemained.keys().join("','") + "'"
// })
// .pageSize(0)
// .all();

Targoman::API::ORM::intfI18N* I18N;
if (dynamic_cast<intfMTModule<false>*>(this->parentModule()))
I18N = dynamic_cast<intfMTModule<false>*>(this->parentModule())->i18n();
else
I18N = dynamic_cast<intfMTModule<true>*>(this->parentModule())->i18n();

auto I18NSelectQuery = I18N->makeSelectQuery(APICALLBOOM_PARAM)
.addCol(tblI18N::Fields::i18nKey)
.addCol(DBExpression::VALUE(QString("COALESCE("
"JSON_UNQUOTE(JSON_EXTRACT(%1.%2, '$.%3')),"
"JSON_UNQUOTE(JSON_EXTRACT(%1.%2, '$.default'))"
")")
.arg(tblI18N::Name)
.arg(tblI18N::Fields::i18nValue)
.arg(APICALLBOOM_PARAM.language())
),
"Translated")

.where({ tblI18N::Fields::i18nKey,
enuConditionOperator::In,
"'" + FullKeys.join("','") + "'"
});
if (Engines.length())
I18NSelectQuery.orWhere({ tblI18N::Fields::i18nKey,
enuConditionOperator::In,
"'" + Engines.join("','") + "'"
});
if (Classes.length())
I18NSelectQuery.orWhere({ tblI18N::Fields::i18nKey,
enuConditionOperator::In,
"'" + Classes.join("','") + "'"
});
if (Directions.length())
I18NSelectQuery.orWhere({ tblI18N::Fields::i18nKey,
enuConditionOperator::In,
"'" + Directions.join("','") + "'"
});

auto I18NRows = I18NSelectQuery
.pageSize(0)
.all();

QMap<QString, QString> I18NMap;

foreach (QVariant Row, I18NRows.Rows) {
QVariantMap Info = Row.toMap();

if (Info["Translated"].toString().isEmpty())
continue;

I18NMap.insert(Info[tblI18N::Fields::i18nKey].toString(), Info["Translated"].toString());
}
//------------------------------------------------
// stuMultiProgressChart Result;

QVariantList Result;
Expand All @@ -778,19 +812,52 @@ QVariant baseintfMTCharts::usageDataForProgressBar(
// }
// ));

QString Title = it.key().split("::").join(" - ");
if (I18NMap.contains(it.key()))
Title = I18NMap[it.key()];
else {
auto KeyParts = it.key().split("::");
QStringList TitleParts;

if (KeyParts.length() >= 1) {
if (I18NMap.contains(KeyParts[0]))
TitleParts.append(I18NMap[KeyParts[0]]);
else
TitleParts.append(KeyParts[0]);
}

if (KeyParts.length() >= 2) {
if (I18NMap.contains(KeyParts[1]))
TitleParts.append(I18NMap[KeyParts[1]]);
else
TitleParts.append(KeyParts[1]);
}

if (KeyParts.length() >= 3) {
if (I18NMap.contains(KeyParts[2]))
TitleParts.append(I18NMap[KeyParts[2]]);
else
TitleParts.append(KeyParts[2]);
}

Title = TitleParts.join(" - ");
}

quint32 Value;

// if (it->Remained == -1)
if (it->Credit == -1)
Value = 50;
else if (it->Remained == -1)
Value = 0;
else if ((it->Credit == 0) || (it->Remained == 0))
Value = 100;
else
Value = (quint32)(((double)it->Remained * 100.0) / (double)it->Credit);

Result.append(QVariantMap({
{ "NAME", it.key() },
{ "TITLE", it.key() }, //"رسمی"
{ "TITLE", Title },
{ "VALUE", Value },
{ "MIN", 0 },
{ "MAX", 100 },
Expand Down
10 changes: 10 additions & 0 deletions Modules/MT/functionalTest/testMT.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,11 @@ private slots:
{
{ "apiToken", this->TokenJWT },
// { "key", "dashboard" },
},
{},
{},
{
"accept-language: fa",
}
);

Expand All @@ -678,6 +683,11 @@ private slots:
// { "assetID", },
// { "step", 15 },
// { "stepUnit", "Minute" },
},
{},
{},
{
"accept-language: fa",
}
);

Expand Down