Result Selection: Result is not changed before user actively selects in the list.

Changig type or porosity model only changes what variables are shown as accessible.
This is also applied to property filters.
Dual porosity support is also added to property filtered. Forgotten before.
p4#: 21499
This commit is contained in:
Jacob Støren
2013-04-30 13:41:53 +02:00
parent 445b6edfbd
commit 60f86cfc3f
11 changed files with 198 additions and 66 deletions

View File

@@ -522,15 +522,15 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
RimReservoirView* riv = rimResultReservoir->createAndAddReservoirView(); RimReservoirView* riv = rimResultReservoir->createAndAddReservoirView();
// Select SOIL as default result variable // Select SOIL as default result variable
riv->cellResult()->resultType = RimDefines::DYNAMIC_NATIVE; riv->cellResult()->setResultType(RimDefines::DYNAMIC_NATIVE);
riv->cellResult()->resultVariable = "SOIL"; riv->cellResult()->setResultVariable("SOIL");
riv->animationMode = true; riv->animationMode = true;
riv->loadDataAndUpdate(); riv->loadDataAndUpdate();
if (!riv->cellResult()->hasResult()) if (!riv->cellResult()->hasResult())
{ {
riv->cellResult()->resultVariable = RimDefines::undefinedResultName(); riv->cellResult()->setResultVariable(RimDefines::undefinedResultName());
} }
RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel(); RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel();
@@ -560,14 +560,14 @@ bool RiaApplication::openInputEclipseCase(const QString& caseName, const QString
RimReservoirView* riv = rimInputReservoir->createAndAddReservoirView(); RimReservoirView* riv = rimInputReservoir->createAndAddReservoirView();
riv->cellResult()->resultType = RimDefines::INPUT_PROPERTY; riv->cellResult()->setResultType(RimDefines::INPUT_PROPERTY);
riv->animationMode = true; riv->animationMode = true;
riv->loadDataAndUpdate(); riv->loadDataAndUpdate();
if (!riv->cellResult()->hasResult()) if (!riv->cellResult()->hasResult())
{ {
riv->cellResult()->resultVariable = RimDefines::undefinedResultName(); riv->cellResult()->setResultVariable(RimDefines::undefinedResultName());
} }
RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel(); RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel();

View File

@@ -640,7 +640,7 @@ void RivReservoirViewPartMgr::computePropertyVisibility(cvf::UByteArray* cellVis
cvf::ref<cvf::StructGridScalarDataAccess> dataAccessObject = eclipseCase->dataAccessObject(grid, porosityModel, timeStepIndex, scalarResultIndex); cvf::ref<cvf::StructGridScalarDataAccess> dataAccessObject = eclipseCase->dataAccessObject(grid, porosityModel, timeStepIndex, scalarResultIndex);
CVF_ASSERT(dataAccessObject.notNull()); CVF_ASSERT(dataAccessObject.notNull());
#pragma omp parallel for schedule(dynamic) //#pragma omp parallel for schedule(dynamic)
for (int cellIndex = 0; cellIndex < static_cast<int>(grid->cellCount()); cellIndex++) for (int cellIndex = 0; cellIndex < static_cast<int>(grid->cellCount()); cellIndex++)
{ {
if ( (*cellVisibility)[cellIndex] ) if ( (*cellVisibility)[cellIndex] )

View File

@@ -178,7 +178,7 @@ void RimCase::removeResult(const QString& resultName)
// Set cell result variable to none if displaying // Set cell result variable to none if displaying
if (result->resultVariable() == resultName) if (result->resultVariable() == resultName)
{ {
result->resultVariable.v() = RimDefines::undefinedResultName(); result->setResultVariable(RimDefines::undefinedResultName());
result->loadResult(); result->loadResult();
rebuildDisplayModel = true; rebuildDisplayModel = true;
@@ -189,9 +189,9 @@ void RimCase::removeResult(const QString& resultName)
for (it = propFilterCollection->propertyFilters.v().begin(); it != propFilterCollection->propertyFilters.v().end(); ++it) for (it = propFilterCollection->propertyFilters.v().begin(); it != propFilterCollection->propertyFilters.v().end(); ++it)
{ {
RimCellPropertyFilter* propertyFilter = *it; RimCellPropertyFilter* propertyFilter = *it;
if (propertyFilter->resultDefinition->resultVariable.v() == resultName) if (propertyFilter->resultDefinition->resultVariable() == resultName)
{ {
propertyFilter->resultDefinition->resultVariable.v() = RimDefines::undefinedResultName(); propertyFilter->resultDefinition->setResultVariable(RimDefines::undefinedResultName());
propertyFilter->resultDefinition->loadResult(); propertyFilter->resultDefinition->loadResult();
propertyFilter->setDefaultValues(); propertyFilter->setDefaultValues();
@@ -227,7 +227,7 @@ void RimCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
RimResultSlot* result = reservoirView->cellResult; RimResultSlot* result = reservoirView->cellResult;
CVF_ASSERT(result); CVF_ASSERT(result);
result->resultVariable.v() = RimDefines::undefinedResultName(); result->setResultVariable(RimDefines::undefinedResultName());
result->loadResult(); result->loadResult();
RimCellEdgeResultSlot* cellEdgeResult = reservoirView->cellEdgeResult; RimCellEdgeResultSlot* cellEdgeResult = reservoirView->cellEdgeResult;

View File

@@ -56,10 +56,12 @@ RimCellPropertyFilter::RimCellPropertyFilter()
resultDefinition = new RimResultDefinition(); resultDefinition = new RimResultDefinition();
// Take ownership of the fields in RimResultDefinition to be able to trap fieldChangedByUi in this class // Take ownership of the fields in RimResultDefinition to be able to trap fieldChangedByUi in this class
resultDefinition->resultType.setOwnerObject(this); resultDefinition->m_resultTypeUiField.setOwnerObject(this);
resultDefinition->resultVariable.setOwnerObject(this); resultDefinition->m_resultTypeUiField.setUiName("");
resultDefinition->resultType.setUiName(""); resultDefinition->m_porosityModelUiField.setOwnerObject(this);
resultDefinition->resultVariable.setUiName(""); resultDefinition->m_porosityModelUiField.setUiName("");
resultDefinition->m_resultVariableUiField.setOwnerObject(this);
resultDefinition->m_resultVariableUiField.setUiName("");
// Set to hidden to avoid this item to been displayed as a child item // Set to hidden to avoid this item to been displayed as a child item
// Fields in this object are displayed using defineUiOrdering() // Fields in this object are displayed using defineUiOrdering()
@@ -89,17 +91,28 @@ RimCellPropertyFilter::~RimCellPropertyFilter()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimCellPropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) void RimCellPropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{ {
if (changedField == &name) if (&name == changedField)
{ {
} }
else if (&(resultDefinition->resultType) == changedField || &(resultDefinition->resultVariable) == changedField)
if ( &(resultDefinition->m_resultTypeUiField) == changedField
|| &(resultDefinition->m_porosityModelUiField) == changedField)
{ {
resultDefinition->fieldChangedByUi(changedField, oldValue, newValue); resultDefinition->fieldChangedByUi(changedField, oldValue, newValue);
}
if ( &(resultDefinition->m_resultVariableUiField) == changedField )
{
resultDefinition->fieldChangedByUi(changedField, oldValue, newValue);
setDefaultValues(); setDefaultValues();
m_parentContainer->fieldChangedByUi(changedField, oldValue, newValue); m_parentContainer->fieldChangedByUi(changedField, oldValue, newValue);
} }
else
if ( &lowerBound == changedField
|| &upperBound == changedField
|| &evaluationRegion == changedField
|| &active == changedField
|| &filterMode == changedField)
{ {
m_parentContainer->fieldChangedByUi(changedField, oldValue, newValue); m_parentContainer->fieldChangedByUi(changedField, oldValue, newValue);
this->updateIconState(); this->updateIconState();
@@ -143,7 +156,7 @@ void RimCellPropertyFilter::setDefaultValues()
size_t scalarIndex = resultDefinition->gridScalarIndex(); size_t scalarIndex = resultDefinition->gridScalarIndex();
if (scalarIndex != cvf::UNDEFINED_SIZE_T) if (scalarIndex != cvf::UNDEFINED_SIZE_T)
{ {
RimReservoirCellResultsStorage* results = m_parentContainer->reservoirView()->currentGridCellResults(); RimReservoirCellResultsStorage* results = resultDefinition->currentGridCellResults();
if (results) if (results)
{ {
results->cellResults()->minMaxCellScalarValues(scalarIndex, min, max); results->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
@@ -170,8 +183,9 @@ void RimCellPropertyFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
// Fields declared in RimResultDefinition // Fields declared in RimResultDefinition
caf::PdmUiGroup* group1 = uiOrdering.addNewGroup("Result"); caf::PdmUiGroup* group1 = uiOrdering.addNewGroup("Result");
group1->add(&(resultDefinition->resultType)); group1->add(&(resultDefinition->m_resultTypeUiField));
group1->add(&(resultDefinition->resultVariable)); group1->add(&(resultDefinition->m_porosityModelUiField));
group1->add(&(resultDefinition->m_resultVariableUiField));
// Fields declared in RimCellFilter // Fields declared in RimCellFilter
uiOrdering.add(&active); uiOrdering.add(&active);

View File

@@ -95,8 +95,9 @@ RimCellPropertyFilter* RimCellPropertyFilterCollection::createAndAppendPropertyF
propertyFilter->setParentContainer(this); propertyFilter->setParentContainer(this);
propertyFilters.v().push_back(propertyFilter); propertyFilters.v().push_back(propertyFilter);
propertyFilter->resultDefinition->resultVariable = m_reservoirView->cellResult->resultVariable; propertyFilter->resultDefinition->setResultVariable(m_reservoirView->cellResult->resultVariable());
propertyFilter->resultDefinition->resultType = m_reservoirView->cellResult->resultType; propertyFilter->resultDefinition->setPorosityModel(m_reservoirView->cellResult->porosityModel());
propertyFilter->resultDefinition->setResultType(m_reservoirView->cellResult->resultType());
propertyFilter->resultDefinition->loadResult(); propertyFilter->resultDefinition->loadResult();
propertyFilter->setDefaultValues(); propertyFilter->setDefaultValues();

View File

@@ -347,7 +347,7 @@ void RimIdenticalGridCaseGroup::clearStatisticsResults()
for (size_t j = 0; j < rimStaticsCase->reservoirViews.size(); j++) for (size_t j = 0; j < rimStaticsCase->reservoirViews.size(); j++)
{ {
RimReservoirView* rimReservoirView = rimStaticsCase->reservoirViews[j]; RimReservoirView* rimReservoirView = rimStaticsCase->reservoirViews[j];
rimReservoirView->cellResult()->resultVariable = RimDefines::undefinedResultName(); rimReservoirView->cellResult()->setResultVariable(RimDefines::undefinedResultName());
rimReservoirView->cellEdgeResult()->resultVariable = RimDefines::undefinedResultName(); rimReservoirView->cellEdgeResult()->resultVariable = RimDefines::undefinedResultName();
rimReservoirView->loadDataAndUpdate(); rimReservoirView->loadDataAndUpdate();
} }

View File

@@ -754,7 +754,7 @@ void RimReservoirView::loadDataAndUpdate()
if (m_reservoir->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0) if (m_reservoir->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0)
{ {
this->cellResult->porosityModel.setUiHidden(true); this->cellResult->setPorosityModelUiFieldHidden(true);
} }
CVF_ASSERT(this->cellEdgeResult() != NULL); CVF_ASSERT(this->cellEdgeResult() != NULL);
@@ -1130,7 +1130,7 @@ void RimReservoirView::updateLegends()
this->cellResult()->legendConfig->setAutomaticRanges(globalMin, globalMax, localMin, localMax); this->cellResult()->legendConfig->setAutomaticRanges(globalMin, globalMax, localMin, localMax);
m_viewer->setColorLegend1(this->cellResult()->legendConfig->legend()); m_viewer->setColorLegend1(this->cellResult()->legendConfig->legend());
this->cellResult()->legendConfig->legend()->setTitle(cvfqt::Utils::fromQString(QString("Cell Results: \n") + this->cellResult()->resultVariable)); this->cellResult()->legendConfig->legend()->setTitle(cvfqt::Utils::fromQString(QString("Cell Results: \n") + this->cellResult()->resultVariable()));
} }
else else
{ {

View File

@@ -38,11 +38,25 @@ RimResultDefinition::RimResultDefinition()
{ {
CAF_PDM_InitObject("Result Definition", "", "", ""); CAF_PDM_InitObject("Result Definition", "", "", "");
CAF_PDM_InitFieldNoDefault(&resultType, "ResultType", "Type", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_resultType, "ResultType", "Type", "", "", "");
CAF_PDM_InitFieldNoDefault(&porosityModel, "PorosityModelType", "Type", "", "", ""); m_resultType.setUiHidden(true);
CAF_PDM_InitField(&resultVariable, "ResultVariable", RimDefines::undefinedResultName(), "Variable", "", "", "" ); CAF_PDM_InitFieldNoDefault(&m_porosityModel, "PorosityModelType", "Type", "", "", "");
m_porosityModel.setUiHidden(true);
CAF_PDM_InitField(&m_resultVariable, "ResultVariable", RimDefines::undefinedResultName(), "Variable", "", "", "" );
m_resultVariable.setUiHidden(true);
resultVariable.setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName()); CAF_PDM_InitFieldNoDefault(&m_resultTypeUiField, "MResultType", "Type", "", "", "");
m_resultTypeUiField.setIOReadable(false);
m_resultTypeUiField.setIOWritable(false);
CAF_PDM_InitFieldNoDefault(&m_porosityModelUiField, "MPorosityModelType", "Type", "", "", "");
m_porosityModelUiField.setIOReadable(false);
m_porosityModelUiField.setIOWritable(false);
CAF_PDM_InitField(&m_resultVariableUiField, "MResultVariable", RimDefines::undefinedResultName(), "Variable", "", "", "" );
m_resultVariableUiField.setIOReadable(false);
m_resultVariableUiField.setIOWritable(false);
m_resultVariableUiField.setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -67,22 +81,61 @@ void RimResultDefinition::setReservoirView(RimReservoirView* ownerReservoirView)
{ {
if (m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0) if (m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0)
{ {
porosityModel.setUiHidden(true); m_porosityModelUiField.setUiHidden(true);
} }
} }
} }
QStringList RimResultDefinition::getResultVariableListForCurrentUIFieldSettings()
{
if (!m_reservoirView || !m_reservoirView->eclipseCase() ) return QStringList();
RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(m_porosityModelUiField());
return m_reservoirView->eclipseCase()->results(porosityModel)->cellResults()->resultNames(m_resultTypeUiField());
}
RimReservoirCellResultsStorage* RimResultDefinition::currentGridCellResults() const
{
if (!m_reservoirView || !m_reservoirView->eclipseCase()) return NULL;
RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(m_porosityModel());
return m_reservoirView->eclipseCase()->results(porosityModel);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) void RimResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{ {
if (changedField == &resultType) if ( &m_resultTypeUiField == changedField
|| &m_porosityModelUiField == changedField )
{ {
resultVariable = RimDefines::undefinedResultName(); QStringList varList = getResultVariableListForCurrentUIFieldSettings();
// If the user are seeing the list with the actually selected result, select that result in the list. Otherwise select nothing.
if ( m_resultTypeUiField() == m_resultType()
&& m_porosityModelUiField() == m_porosityModel()
&& varList.contains(resultVariable()))
{
m_resultVariableUiField = resultVariable();
}
else
{
m_resultVariableUiField = "";
}
} }
if (&m_resultVariableUiField == changedField)
{
m_porosityModel = m_porosityModelUiField;
m_resultType = m_resultTypeUiField;
m_resultVariable = m_resultVariableUiField;
loadResult(); loadResult();
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -90,11 +143,11 @@ void RimResultDefinition::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimResultDefinition::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) QList<caf::PdmOptionItemInfo> RimResultDefinition::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
{ {
if (fieldNeedingOptions == &resultVariable) if (fieldNeedingOptions == &m_resultVariableUiField)
{ {
if (m_reservoirView && m_reservoirView->currentGridCellResults()) if (this->currentGridCellResults())
{ {
QStringList varList = m_reservoirView->currentGridCellResults()->cellResults()->resultNames(resultType()); QStringList varList = getResultVariableListForCurrentUIFieldSettings();
QList<caf::PdmOptionItemInfo> optionList; QList<caf::PdmOptionItemInfo> optionList;
int i; int i;
for (i = 0; i < varList.size(); ++i) for (i = 0; i < varList.size(); ++i)
@@ -119,8 +172,8 @@ size_t RimResultDefinition::gridScalarIndex() const
{ {
if (m_gridScalarResultIndex == cvf::UNDEFINED_SIZE_T) if (m_gridScalarResultIndex == cvf::UNDEFINED_SIZE_T)
{ {
const RimReservoirCellResultsStorage* gridCellResults = m_reservoirView->currentGridCellResults(); const RimReservoirCellResultsStorage* gridCellResults = this->currentGridCellResults();
if (gridCellResults) m_gridScalarResultIndex = gridCellResults->cellResults()->findScalarResultIndex(resultType(), resultVariable()); if (gridCellResults) m_gridScalarResultIndex = gridCellResults->cellResults()->findScalarResultIndex(m_resultType(), m_resultVariable());
} }
return m_gridScalarResultIndex; return m_gridScalarResultIndex;
} }
@@ -130,10 +183,10 @@ size_t RimResultDefinition::gridScalarIndex() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimResultDefinition::loadResult() void RimResultDefinition::loadResult()
{ {
RimReservoirCellResultsStorage* gridCellResults = m_reservoirView->currentGridCellResults(); RimReservoirCellResultsStorage* gridCellResults = this->currentGridCellResults();
if (gridCellResults) if (gridCellResults)
{ {
m_gridScalarResultIndex = gridCellResults->findOrLoadScalarResult(resultType(), resultVariable); m_gridScalarResultIndex = gridCellResults->findOrLoadScalarResult(m_resultType(), m_resultVariable);
} }
else else
{ {
@@ -148,7 +201,7 @@ void RimResultDefinition::loadResult()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimResultDefinition::hasStaticResult() const bool RimResultDefinition::hasStaticResult() const
{ {
const RimReservoirCellResultsStorage* gridCellResults = m_reservoirView->currentGridCellResults(); const RimReservoirCellResultsStorage* gridCellResults = this->currentGridCellResults();
if (hasResult() && gridCellResults->cellResults()->timeStepCount(m_gridScalarResultIndex) == 1 ) if (hasResult() && gridCellResults->cellResults()->timeStepCount(m_gridScalarResultIndex) == 1 )
{ {
return true; return true;
@@ -166,10 +219,10 @@ bool RimResultDefinition::hasResult() const
{ {
if (m_gridScalarResultIndex != cvf::UNDEFINED_SIZE_T) return true; if (m_gridScalarResultIndex != cvf::UNDEFINED_SIZE_T) return true;
if (m_reservoirView->currentGridCellResults() && m_reservoirView->currentGridCellResults()->cellResults()) if (this->currentGridCellResults() && this->currentGridCellResults()->cellResults())
{ {
const RigCaseCellResultsData* gridCellResults = m_reservoirView->currentGridCellResults()->cellResults(); const RigCaseCellResultsData* gridCellResults = this->currentGridCellResults()->cellResults();
m_gridScalarResultIndex = gridCellResults->findScalarResultIndex(resultType(), resultVariable()); m_gridScalarResultIndex = gridCellResults->findScalarResultIndex(m_resultType(), m_resultVariable());
return m_gridScalarResultIndex != cvf::UNDEFINED_SIZE_T; return m_gridScalarResultIndex != cvf::UNDEFINED_SIZE_T;
} }
@@ -184,14 +237,14 @@ bool RimResultDefinition::hasDynamicResult() const
{ {
if (hasResult()) if (hasResult())
{ {
if (resultType() == RimDefines::DYNAMIC_NATIVE) if (m_resultType() == RimDefines::DYNAMIC_NATIVE)
{ {
return true; return true;
} }
if (m_reservoirView->currentGridCellResults() && m_reservoirView->currentGridCellResults()->cellResults()) if (this->currentGridCellResults() && this->currentGridCellResults()->cellResults())
{ {
const RigCaseCellResultsData* gridCellResults = m_reservoirView->currentGridCellResults()->cellResults(); const RigCaseCellResultsData* gridCellResults = this->currentGridCellResults()->cellResults();
if (gridCellResults->timeStepCount(m_gridScalarResultIndex) > 1 ) if (gridCellResults->timeStepCount(m_gridScalarResultIndex) > 1 )
{ {
return true; return true;
@@ -209,3 +262,48 @@ RimReservoirView* RimResultDefinition::reservoirView()
{ {
return m_reservoirView; return m_reservoirView;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::initAfterRead()
{
m_porosityModelUiField = m_porosityModel;
m_resultTypeUiField = m_resultType;
m_resultVariableUiField = m_resultVariable;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::setResultType(RimDefines::ResultCatType val)
{
m_resultType = val;
m_resultTypeUiField = val;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::setPorosityModel(RimDefines::PorosityModelType val)
{
m_porosityModel = val;
m_porosityModelUiField = val;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::setResultVariable(const QString& val)
{
m_resultVariable = val;
m_resultVariableUiField = val;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::setPorosityModelUiFieldHidden(bool hide)
{
m_porosityModelUiField.setUiHidden(true);
}

View File

@@ -27,7 +27,7 @@
class RimReservoirView; class RimReservoirView;
class RigCaseCellResultsData; class RigCaseCellResultsData;
class RimReservoirCellResultsStorage;
//================================================================================================== //==================================================================================================
/// ///
/// ///
@@ -42,24 +42,43 @@ public:
virtual void setReservoirView(RimReservoirView* ownerReservoirView); virtual void setReservoirView(RimReservoirView* ownerReservoirView);
RimReservoirView* reservoirView(); RimReservoirView* reservoirView();
caf::PdmField< caf::AppEnum< RimDefines::ResultCatType > > resultType; RimDefines::ResultCatType resultType() const { return m_resultType(); }
caf::PdmField< caf::AppEnum< RimDefines::PorosityModelType > > porosityModel; void setResultType(RimDefines::ResultCatType val);
caf::PdmField<QString> resultVariable; RimDefines::PorosityModelType porosityModel() const { return m_porosityModel(); }
void setPorosityModel(RimDefines::PorosityModelType val);
QString resultVariable() const { return m_resultVariable(); }
void setResultVariable(const QString& val);
void setPorosityModelUiFieldHidden(bool hide);
void loadResult(); void loadResult();
size_t gridScalarIndex() const; size_t gridScalarIndex() const;
bool hasStaticResult() const; bool hasStaticResult() const;
bool hasDynamicResult() const; bool hasDynamicResult() const;
bool hasResult() const; bool hasResult() const;
RimReservoirCellResultsStorage* currentGridCellResults() const;
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly ); virtual QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly );
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void initAfterRead();
protected: protected:
caf::PdmField< caf::AppEnum< RimDefines::ResultCatType > > m_resultType;
caf::PdmField< caf::AppEnum< RimDefines::PorosityModelType > > m_porosityModel;
caf::PdmField<QString> m_resultVariable;
friend class RimCellPropertyFilter;
// User interface only fields, to support "filtering"-like behaviour etc.
caf::PdmField< caf::AppEnum< RimDefines::ResultCatType > > m_resultTypeUiField;
caf::PdmField< caf::AppEnum< RimDefines::PorosityModelType > > m_porosityModelUiField;
caf::PdmField<QString> m_resultVariableUiField;
mutable size_t m_gridScalarResultIndex; mutable size_t m_gridScalarResultIndex;
caf::PdmPointer<RimReservoirView> m_reservoirView; caf::PdmPointer<RimReservoirView> m_reservoirView;
private:
QStringList getResultVariableListForCurrentUIFieldSettings();
}; };

View File

@@ -55,7 +55,7 @@ RimResultSlot::~RimResultSlot()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimResultSlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) void RimResultSlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{ {
if (changedField == &resultVariable) if (changedField == &m_resultVariable)
{ {
if (oldValue != newValue) if (oldValue != newValue)
{ {

View File

@@ -706,7 +706,7 @@ void RimUiTreeView::slotWriteBinaryResultAsInputProperty()
if (!resultSlot->reservoirView()->eclipseCase()->reservoirData()) return; if (!resultSlot->reservoirView()->eclipseCase()->reservoirData()) return;
RimBinaryExportSettings exportSettings; RimBinaryExportSettings exportSettings;
exportSettings.eclipseKeyword = resultSlot->resultVariable; exportSettings.eclipseKeyword = resultSlot->resultVariable();
{ {
QString projectFolder; QString projectFolder;
@@ -723,7 +723,7 @@ void RimUiTreeView::slotWriteBinaryResultAsInputProperty()
projectFolder = resultSlot->reservoirView()->eclipseCase()->locationOnDisc(); projectFolder = resultSlot->reservoirView()->eclipseCase()->locationOnDisc();
} }
QString outputFileName = projectFolder + "/" + resultSlot->resultVariable; QString outputFileName = projectFolder + "/" + resultSlot->resultVariable();
exportSettings.fileName = outputFileName; exportSettings.fileName = outputFileName;
} }
@@ -734,7 +734,7 @@ void RimUiTreeView::slotWriteBinaryResultAsInputProperty()
size_t timeStep = resultSlot->reservoirView()->currentTimeStep(); size_t timeStep = resultSlot->reservoirView()->currentTimeStep();
RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(resultSlot->porosityModel()); RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(resultSlot->porosityModel());
bool isOk = RifEclipseInputFileTools::writeBinaryResultToTextFile(exportSettings.fileName, resultSlot->reservoirView()->eclipseCase()->reservoirData(), porosityModel, timeStep, resultSlot->resultVariable, exportSettings.eclipseKeyword, exportSettings.undefinedValue); bool isOk = RifEclipseInputFileTools::writeBinaryResultToTextFile(exportSettings.fileName, resultSlot->reservoirView()->eclipseCase()->reservoirData(), porosityModel, timeStep, resultSlot->resultVariable(), exportSettings.eclipseKeyword, exportSettings.undefinedValue);
if (!isOk) if (!isOk)
{ {
QMessageBox::critical(NULL, "File export", "Failed to exported current result to " + exportSettings.fileName); QMessageBox::critical(NULL, "File export", "Failed to exported current result to " + exportSettings.fileName);