mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-16 00:05:45 -04:00
Invert args
This commit is contained in:
parent
e2266aafe0
commit
40947d4266
@ -18,9 +18,9 @@
|
||||
},
|
||||
{
|
||||
"variant": "Layer and feature parameters",
|
||||
"variant_description": "If called with a 'feature' and a 'layer' parameter, the function will return the representation of the attributes of the specified feature from the specified layer.",
|
||||
"arguments": [ { "arg": "feature", "description": "The feature which should be evaluated." }, { "arg": "layer", "description": "The layer (or its ID or name)." } ],
|
||||
"examples": [ { "expression": "represent_attributes(@atlas_feature, 'atlas_layer')", "returns" : "The representation of the attributes for the specified feature from the specified layer." } ]
|
||||
"variant_description": "If called with a 'layer' and a 'feature' parameter, the function will return the representation of the attributes of the specified feature from the specified layer.",
|
||||
"arguments": [ { "arg": "layer", "description": "The layer (or its ID or name)." }, { "arg": "feature", "description": "The feature which should be evaluated." } ],
|
||||
"examples": [ { "expression": "represent_attributes('atlas_layer', @atlas_feature)", "returns" : "The representation of the attributes for the specified feature from the specified layer." } ]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1732,35 +1732,25 @@ static QVariant fcnRepresentAttributes( const QVariantList &values, const QgsExp
|
||||
QgsVectorLayer *layer = nullptr;
|
||||
QgsFeature feature;
|
||||
|
||||
if ( values.size() == 2 )
|
||||
if ( values.isEmpty() )
|
||||
{
|
||||
if ( ! values.at( 0 ).isNull() )
|
||||
{
|
||||
feature = QgsExpressionUtils::getFeature( values.at( 0 ), parent );
|
||||
}
|
||||
else if ( context && context->hasFeature() )
|
||||
{
|
||||
feature = context->feature();
|
||||
}
|
||||
else
|
||||
{
|
||||
parent->setEvalErrorString( QObject::tr( "Cannot use represent attributes function in this context: feature is not set" ) );
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if ( ! values.at( 1 ).isNull() )
|
||||
{
|
||||
layer = QgsExpressionUtils::getVectorLayer( values.at( 1 ), parent );
|
||||
}
|
||||
else if ( context )
|
||||
{
|
||||
layer = QgsExpressionUtils::getVectorLayer( context->variable( QStringLiteral( "layer" ) ), parent );
|
||||
}
|
||||
else
|
||||
{
|
||||
parent->setEvalErrorString( QObject::tr( "Cannot use represent attributes function: layer is not set" ) );
|
||||
return QVariant();
|
||||
}
|
||||
feature = context->feature();
|
||||
layer = QgsExpressionUtils::getVectorLayer( context->variable( QStringLiteral( "layer" ) ), parent );
|
||||
}
|
||||
else if ( values.size() == 1 )
|
||||
{
|
||||
layer = QgsExpressionUtils::getVectorLayer( context->variable( QStringLiteral( "layer" ) ), parent );
|
||||
feature = QgsExpressionUtils::getFeature( values.at( 0 ), parent );
|
||||
}
|
||||
else if ( values.size() == 2 )
|
||||
{
|
||||
layer = QgsExpressionUtils::getVectorLayer( values.at( 0 ), parent );
|
||||
feature = QgsExpressionUtils::getFeature( values.at( 1 ), parent );
|
||||
}
|
||||
else
|
||||
{
|
||||
parent->setEvalErrorString( QObject::tr( "Function `represent_attributes` requires no more than two parameters. %1 given." ).arg( values.length() ) );
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if ( !layer )
|
||||
@ -1769,6 +1759,12 @@ static QVariant fcnRepresentAttributes( const QVariantList &values, const QgsExp
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if ( !feature.isValid() )
|
||||
{
|
||||
parent->setEvalErrorString( QObject::tr( "Cannot use represent attributes function: feature could not be resolved." ) );
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
const QgsFields fields = feature.fields();
|
||||
QVariantMap result;
|
||||
for ( int fieldIndex = 0; fieldIndex < fields.count(); ++fieldIndex )
|
||||
@ -7754,7 +7750,7 @@ const QList<QgsExpressionFunction *> &QgsExpression::Functions()
|
||||
fcnAttributes, QStringLiteral( "Record and Attributes" ), QString(), false, QSet<QString>() << QgsFeatureRequest::ALL_ATTRIBUTES );
|
||||
attributesFunc->setIsStatic( false );
|
||||
functions << attributesFunc;
|
||||
QgsStaticExpressionFunction *representAttributesFunc = new QgsStaticExpressionFunction( QStringLiteral( "represent_attributes" ), QgsExpressionFunction::ParameterList() << QgsExpressionFunction::Parameter( QStringLiteral( "feature" ), true ) << QgsExpressionFunction::Parameter( QStringLiteral( "layer" ), true ),
|
||||
QgsStaticExpressionFunction *representAttributesFunc = new QgsStaticExpressionFunction( QStringLiteral( "represent_attributes" ), -1,
|
||||
fcnRepresentAttributes, QStringLiteral( "Record and Attributes" ), QString(), false, QSet<QString>() << QgsFeatureRequest::ALL_ATTRIBUTES );
|
||||
representAttributesFunc->setIsStatic( false );
|
||||
functions << representAttributesFunc;
|
||||
|
@ -566,7 +566,7 @@ class TestQgsExpression: public QObject
|
||||
QgsProject::instance()->addMapLayer( &layer, false, false );
|
||||
QgsExpressionContext context3;
|
||||
context3.setFeature( f2 );
|
||||
expression = QgsExpression( "represent_attributes($currentfeature, 'test_represent_attributes')" );
|
||||
expression = QgsExpression( "represent_attributes('test_represent_attributes', $currentfeature)" );
|
||||
|
||||
result = expression.evaluate( &context3 ).toMap();
|
||||
|
||||
@ -580,7 +580,7 @@ class TestQgsExpression: public QObject
|
||||
|
||||
// Test errors
|
||||
QgsProject::instance()->removeMapLayer( layer.id() );
|
||||
expression = QgsExpression( "represent_attributes($currentfeature, 'test_represent_attributes')" );
|
||||
expression = QgsExpression( "represent_attributes('test_represent_attributes', $currentfeature)" );
|
||||
QgsExpressionContext context4;
|
||||
result = expression.evaluate( &context4 ).toMap();
|
||||
QVERIFY( expression.hasEvalError() );
|
||||
|
Loading…
x
Reference in New Issue
Block a user