@@ -2882,6 +2882,30 @@ QString QgsWMSServer::replaceValueMapAndRelation( QgsVectorLayer* vl, int idx, c
2882
2882
return attributeVal;
2883
2883
}
2884
2884
2885
+ QString outputString;
2886
+ if ( vrdata.mAllowMulti )
2887
+ {
2888
+ QString valueString = attributeVal;
2889
+ QStringList valueList = valueString.remove ( QChar ( ' {' ) ).remove ( QChar ( ' }' ) ).split ( " ," );
2890
+ outputString += " {" ;
2891
+ for ( int i = 0 ; i < valueList.size (); ++i )
2892
+ {
2893
+ if ( i > 0 )
2894
+ {
2895
+ outputString += " ," ;
2896
+ }
2897
+ outputString += relationValue ( valueList.at ( i ), layer, vrdata.mKey , vrdata.mValue );
2898
+ }
2899
+ outputString += " }" ;
2900
+ }
2901
+ else
2902
+ {
2903
+ outputString = relationValue ( attributeVal, layer, vrdata.mKey , vrdata.mValue );
2904
+ }
2905
+
2906
+ return outputString;
2907
+
2908
+ /*
2885
2909
int keyId = layer->fieldNameIndex( vrdata.mKey );
2886
2910
int valueId = layer->fieldNameIndex( vrdata.mValue );
2887
2911
if ( keyId == -1 || valueId == -1 )
@@ -2897,6 +2921,33 @@ QString QgsWMSServer::replaceValueMapAndRelation( QgsVectorLayer* vl, int idx, c
2897
2921
{
2898
2922
return f.attribute( vrdata.mValue ).toString();
2899
2923
}
2924
+ }*/
2925
+
2926
+ }
2927
+ return attributeVal;
2928
+ }
2929
+
2930
+ QString QgsWMSServer::relationValue ( const QString& attributeVal, QgsVectorLayer* layer, const QString& key, const QString& value )
2931
+ {
2932
+ if ( !layer )
2933
+ {
2934
+ return attributeVal;
2935
+ }
2936
+
2937
+ int keyId = layer->fieldNameIndex ( key );
2938
+ int valueId = layer->fieldNameIndex ( value );
2939
+ if ( keyId == -1 || valueId == -1 )
2940
+ {
2941
+ return attributeVal;
2942
+ }
2943
+
2944
+ QgsFeatureIterator fIt = layer->getFeatures ( QgsFeatureRequest ().setFlags ( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes ( QgsAttributeList () << keyId << valueId ) );
2945
+ QgsFeature f;
2946
+ while ( fIt .nextFeature ( f ) )
2947
+ {
2948
+ if ( f.attribute ( key ).toString () == attributeVal )
2949
+ {
2950
+ return f.attribute ( value ).toString ();
2900
2951
}
2901
2952
}
2902
2953
return attributeVal;
0 commit comments