mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Added groupId to case groups
p4#: 21594
This commit is contained in:
parent
b63306099e
commit
06d32ae97e
@ -57,6 +57,9 @@ RimIdenticalGridCaseGroup::RimIdenticalGridCaseGroup()
|
||||
|
||||
CAF_PDM_InitField(&name, "UserDescription", QString("Grid Case Group"), "Name", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&groupId, "GroupId", -1, "Case Group ID", "", "" ,"");
|
||||
groupId.setUiReadOnly(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&statisticsCaseCollection, "StatisticsCaseCollection", "Derived Statistics", ":/Histograms16x16.png", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&caseCollection, "CaseCollection", "Cases", ":/Cases16x16.png", "", "");
|
||||
|
||||
|
@ -47,6 +47,7 @@ public:
|
||||
virtual ~RimIdenticalGridCaseGroup();
|
||||
|
||||
caf::PdmField<QString> name;
|
||||
caf::PdmField<int> groupId;
|
||||
caf::PdmField<RimCaseCollection*> caseCollection;
|
||||
caf::PdmField<RimCaseCollection*> statisticsCaseCollection;
|
||||
|
||||
|
@ -58,6 +58,9 @@ RimProject::RimProject(void)
|
||||
CAF_PDM_InitField(&nextValidCaseId, "NextValidCaseId", 0, "Next Valid Case ID", "", "" ,"");
|
||||
nextValidCaseId.setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitField(&nextValidCaseGroupId, "NextValidCaseGroupId", 0, "Next Valid Case Group ID", "", "" ,"");
|
||||
nextValidCaseGroupId.setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&reservoirs, "Reservoirs", "", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&caseGroups, "CaseGroups", "", "", "", "");
|
||||
|
||||
@ -102,6 +105,7 @@ void RimProject::close()
|
||||
fileName = "";
|
||||
|
||||
nextValidCaseId = 0;
|
||||
nextValidCaseGroupId = 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -117,31 +121,64 @@ void RimProject::initAfterRead()
|
||||
|
||||
this->setScriptDirectories(scriptDirectories);
|
||||
|
||||
// Find largest used caseId read from file
|
||||
int largestCaseId = -1;
|
||||
|
||||
std::vector<RimCase*> cases;
|
||||
allCases(cases);
|
||||
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
// Find largest used caseId read from file and make sure all cases have a valid caseId
|
||||
{
|
||||
if (cases[i]->caseId > largestCaseId)
|
||||
int largestId = -1;
|
||||
|
||||
std::vector<RimCase*> cases;
|
||||
allCases(cases);
|
||||
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
{
|
||||
largestCaseId = cases[i]->caseId;
|
||||
if (cases[i]->caseId > largestId)
|
||||
{
|
||||
largestId = cases[i]->caseId;
|
||||
}
|
||||
}
|
||||
|
||||
if (largestId > this->nextValidCaseId)
|
||||
{
|
||||
this->nextValidCaseId = largestId + 1;
|
||||
}
|
||||
|
||||
// Assign case Id to cases with an invalid case Id
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
{
|
||||
if (cases[i]->caseId < 0)
|
||||
{
|
||||
assignCaseIdToCase(cases[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (largestCaseId > nextValidCaseId)
|
||||
// Find largest used groupId read from file and make sure all groups have a valid groupId
|
||||
{
|
||||
nextValidCaseId = largestCaseId + 1;
|
||||
}
|
||||
int largestGroupId = -1;
|
||||
|
||||
// Assign case Id to cases with an invalid case Id
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
{
|
||||
if (cases[i]->caseId < 0)
|
||||
for (size_t i = 0; i < caseGroups.size(); i++)
|
||||
{
|
||||
assignCaseIdToCase(cases[i]);
|
||||
RimIdenticalGridCaseGroup* cg = caseGroups()[i];
|
||||
|
||||
if (cg->groupId > largestGroupId)
|
||||
{
|
||||
largestGroupId = cg->groupId;
|
||||
}
|
||||
}
|
||||
|
||||
if (largestGroupId > this->nextValidCaseGroupId)
|
||||
{
|
||||
this->nextValidCaseGroupId = largestGroupId + 1;
|
||||
}
|
||||
|
||||
// Assign group Id to groups with an invalid Id
|
||||
for (size_t i = 0; i < caseGroups.size(); i++)
|
||||
{
|
||||
RimIdenticalGridCaseGroup* cg = caseGroups()[i];
|
||||
|
||||
if (cg->groupId < 0)
|
||||
{
|
||||
assignIdToCaseGroup(cg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,6 +239,8 @@ RimIdenticalGridCaseGroup* RimProject::createIdenticalCaseGroupFromMainCase(RimC
|
||||
CVF_ASSERT(equalGrid);
|
||||
|
||||
RimIdenticalGridCaseGroup* group = new RimIdenticalGridCaseGroup;
|
||||
assignIdToCaseGroup(group);
|
||||
|
||||
RimCase* createdCase = group->createAndAppendStatisticsCase();
|
||||
assignCaseIdToCase(createdCase);
|
||||
|
||||
@ -239,6 +278,8 @@ void RimProject::moveEclipseCaseIntoCaseGroup(RimCase* rimReservoir)
|
||||
if (!foundGroup)
|
||||
{
|
||||
RimIdenticalGridCaseGroup* group = new RimIdenticalGridCaseGroup;
|
||||
assignIdToCaseGroup(group);
|
||||
|
||||
group->addCase(rimReservoir);
|
||||
|
||||
caseGroups().push_back(group);
|
||||
@ -354,6 +395,19 @@ void RimProject::assignCaseIdToCase(RimCase* reservoirCase)
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimProject::assignIdToCaseGroup(RimIdenticalGridCaseGroup* caseGroup)
|
||||
{
|
||||
if (caseGroup)
|
||||
{
|
||||
caseGroup->groupId = nextValidCaseGroupId;
|
||||
|
||||
nextValidCaseGroupId = nextValidCaseGroupId + 1;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -47,6 +47,7 @@ public:
|
||||
caf::PdmField<QString> treeViewState;
|
||||
caf::PdmField<QString> currentModelIndexPath;
|
||||
caf::PdmField<int> nextValidCaseId; // Unique case ID within a project, used to identify a case from Octave scripts
|
||||
caf::PdmField<int> nextValidCaseGroupId; // Unique case group ID within a project, used to identify a case group from Octave scripts
|
||||
|
||||
void setScriptDirectories(const QString& scriptDirectories);
|
||||
QString projectFileVersionString() const;
|
||||
@ -61,6 +62,7 @@ public:
|
||||
void setProjectFileNameAndUpdateDependencies(const QString& fileName);
|
||||
|
||||
void assignCaseIdToCase(RimCase* reservoirCase);
|
||||
void assignIdToCaseGroup(RimIdenticalGridCaseGroup* caseGroup);
|
||||
|
||||
private:
|
||||
RigMainGrid* registerCaseInGridCollection(RigCaseData* rigEclipseCase);
|
||||
|
@ -599,6 +599,8 @@ RimIdenticalGridCaseGroup* RimUiTreeModelPdm::addCaseGroup(QModelIndex& inserted
|
||||
beginInsertRows(rootIndex, position, position);
|
||||
|
||||
RimIdenticalGridCaseGroup* createdObject = new RimIdenticalGridCaseGroup;
|
||||
proj->assignIdToCaseGroup(createdObject);
|
||||
|
||||
RimCase* createdReservoir = createdObject->createAndAppendStatisticsCase();
|
||||
proj->assignCaseIdToCase(createdReservoir);
|
||||
createdObject->name = QString("Grid Case Group %1").arg(position + 1);
|
||||
|
Loading…
Reference in New Issue
Block a user