bool QgsReclassifyByLayerAlgorithm::_prepareAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * ) { std::unique_ptr< QgsFeatureSource >tableSource( parameterAsSource( parameters, QStringLiteral( "INPUT_TABLE" ), context ) ); if ( !tableSource ) throw QgsProcessingException( invalidSourceError( parameters, QStringLiteral( "INPUT_TABLE" ) ) ); QString fieldMin = parameterAsString( parameters, QStringLiteral( "MIN_FIELD" ), context ); mMinFieldIdx = tableSource->fields().lookupField( fieldMin ); if ( mMinFieldIdx < 0 ) throw QgsProcessingException( QObject::tr( "Invalid field specified for MIN_FIELD: %1" ).arg( fieldMin ) ); QString fieldMax = parameterAsString( parameters, QStringLiteral( "MAX_FIELD" ), context ); mMaxFieldIdx = tableSource->fields().lookupField( fieldMax ); if ( mMaxFieldIdx < 0 ) throw QgsProcessingException( QObject::tr( "Invalid field specified for MAX_FIELD: %1" ).arg( fieldMax ) ); QString fieldValue = parameterAsString( parameters, QStringLiteral( "VALUE_FIELD" ), context ); mValueFieldIdx = tableSource->fields().lookupField( fieldValue ); if ( mValueFieldIdx < 0 ) throw QgsProcessingException( QObject::tr( "Invalid field specified for VALUE_FIELD: %1" ).arg( fieldValue ) ); QgsFeatureRequest request; request.setFlags( QgsFeatureRequest::NoGeometry ); request.setSubsetOfAttributes( QgsAttributeList() << mMinFieldIdx << mMaxFieldIdx << mValueFieldIdx ); mTableIterator = tableSource->getFeatures( request ); return true; }
void TestLoading::testDataSets() { TableSource *source = tableSource(); QVERIFY(source); // y data testDataSetCellRegions(0, CellRegion(source, "Sheet1.E5:G5"), // series label CellRegion(source, "Sheet1.D5"), // categories (specified in x-axis) CellRegion(source, "Sheet1.E4:G4")); }
void TestLoading::initTestCase() { // Fake sheet data from embedding document m_sheet.setRowCount(6); m_sheet.setColumnCount(8); // Categories m_sheet.setData(m_sheet.index(3, 4), "Pass"); m_sheet.setData(m_sheet.index(3, 5), "Fail"); m_sheet.setData(m_sheet.index(3, 6), "NA"); // Series label m_sheet.setData(m_sheet.index(4, 3), "Week"); QVERIFY(tableSource()); tableSource()->add("Sheet1", &m_sheet); // No actual data needed // Tell the chart it's embedded m_chart->setUsesInternalModelOnly(false); TestLoadingBase::initTestCase(); }