#2734 Perforation Intervals: Add custom start date and custom end date

This commit is contained in:
Magne Sjaastad
2018-05-24 20:02:01 +02:00
parent 24920e2d12
commit fb7d24e99d
3 changed files with 59 additions and 33 deletions

View File

@@ -87,11 +87,7 @@ void RicWellPathImportPerforationIntervalsFeature::onActionTriggered(bool isChec
perforationInterval->setStartAndEndMD(interval.startMD, interval.endMD); perforationInterval->setStartAndEndMD(interval.startMD, interval.endMD);
perforationInterval->setDiameter(interval.diameter); perforationInterval->setDiameter(interval.diameter);
perforationInterval->setSkinFactor(interval.skinFactor); perforationInterval->setSkinFactor(interval.skinFactor);
if (interval.startOfHistory) if (!interval.startOfHistory)
{
perforationInterval->setStartOfHistory();
}
else
{ {
perforationInterval->setStartDate(interval.date); perforationInterval->setStartDate(interval.date);
} }

View File

@@ -40,8 +40,15 @@ RimPerforationInterval::RimPerforationInterval()
CAF_PDM_InitField(&m_endMD, "EndMeasuredDepth", 0.0, "End MD", "", "", ""); CAF_PDM_InitField(&m_endMD, "EndMeasuredDepth", 0.0, "End MD", "", "", "");
CAF_PDM_InitField(&m_diameter, "Diameter", 0.216, "Diameter", "", "", ""); CAF_PDM_InitField(&m_diameter, "Diameter", 0.216, "Diameter", "", "", "");
CAF_PDM_InitField(&m_skinFactor, "SkinFactor", 0.0, "Skin Factor", "", "", ""); CAF_PDM_InitField(&m_skinFactor, "SkinFactor", 0.0, "Skin Factor", "", "", "");
CAF_PDM_InitField(&m_startOfHistory, "StartOfHistory", true, "All Timesteps", "", "", "");
CAF_PDM_InitField(&m_startDate, "StartDate", QDateTime::currentDateTime(), "Start Date", "", "", ""); CAF_PDM_InitField(&m_startOfHistory_OBSOLETE, "StartOfHistory", true, "All Timesteps", "", "", "");
m_startOfHistory_OBSOLETE.xmlCapability()->setIOWritable(false);
CAF_PDM_InitField(&m_useCustomStartDate, "UseCustomStartDate", false, "Custom Start Date", "", "", "");
CAF_PDM_InitField(&m_startDate, "StartDate", QDateTime::currentDateTime(), "Start Date", "", "", "");
CAF_PDM_InitField(&m_useCustomEndDate, "UseCustomEndDate", false, "Custom End Date", "", "", "");
CAF_PDM_InitField(&m_endDate, "EndDate", QDateTime::currentDateTime(), "End Date", "", "", "");
nameField()->uiCapability()->setUiReadOnly(true); nameField()->uiCapability()->setUiReadOnly(true);
} }
@@ -65,20 +72,25 @@ void RimPerforationInterval::setStartAndEndMD(double startMD, double endMD)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimPerforationInterval::setStartOfHistory() void RimPerforationInterval::setStartDate(const QDate& date)
{ {
m_startOfHistory = true; if (date.isValid())
{
m_startDate.uiCapability()->setUiReadOnly(m_startOfHistory()); m_useCustomStartDate = true;
m_startDate = QDateTime(date);
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimPerforationInterval::setStartDate(const QDate& date) void RimPerforationInterval::setEndDate(const QDate& date)
{ {
m_startOfHistory = false; if (date.isValid())
m_startDate = QDateTime(date); {
m_useCustomEndDate = true;
m_endDate = QDateTime(date);
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -144,14 +156,11 @@ double RimPerforationInterval::skinFactor() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimPerforationInterval::isActiveOnDate(const QDateTime& date) const bool RimPerforationInterval::isActiveOnDate(const QDateTime& date) const
{ {
if (m_startOfHistory()) if (m_useCustomStartDate() && date < m_startDate()) return false;
{
return true;
}
if (!date.isValid()) return false; if (m_useCustomEndDate() && date > m_endDate()) return false;
return m_startDate() < date; return true;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -199,12 +208,6 @@ void RimPerforationInterval::setUnitSystemSpecificDefaults()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimPerforationInterval::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) void RimPerforationInterval::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{ {
if (changedField == &m_startOfHistory)
{
m_startDate.uiCapability()->setUiReadOnly(m_startOfHistory());
}
RimProject* proj; RimProject* proj;
this->firstAncestorOrThisOfTypeAsserted(proj); this->firstAncestorOrThisOfTypeAsserted(proj);
proj->reloadCompletionTypeResultsInAllViews(); proj->reloadCompletionTypeResultsInAllViews();
@@ -242,14 +245,23 @@ void RimPerforationInterval::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
} }
} }
} }
m_startDate.uiCapability()->setUiReadOnly(m_startOfHistory());
uiOrdering.add(&m_startMD); uiOrdering.add(&m_startMD);
uiOrdering.add(&m_endMD); uiOrdering.add(&m_endMD);
uiOrdering.add(&m_diameter); uiOrdering.add(&m_diameter);
uiOrdering.add(&m_skinFactor); uiOrdering.add(&m_skinFactor);
uiOrdering.add(&m_startOfHistory);
uiOrdering.add(&m_startDate); uiOrdering.add(&m_useCustomStartDate);
if (m_useCustomStartDate)
{
uiOrdering.add(&m_startDate);
}
uiOrdering.add(&m_useCustomEndDate);
if (m_useCustomEndDate)
{
uiOrdering.add(&m_endDate);
}
uiOrdering.skipRemainingFields(); uiOrdering.skipRemainingFields();
} }
@@ -259,7 +271,7 @@ void RimPerforationInterval::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimPerforationInterval::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) void RimPerforationInterval::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
{ {
if (field == &m_startDate) if (field == &m_startDate || field == &m_endDate)
{ {
caf::PdmUiDateEditorAttribute* myAttr = static_cast<caf::PdmUiDateEditorAttribute*>(attribute); caf::PdmUiDateEditorAttribute* myAttr = static_cast<caf::PdmUiDateEditorAttribute*>(attribute);
if (myAttr) if (myAttr)
@@ -269,3 +281,14 @@ void RimPerforationInterval::defineEditorAttribute(const caf::PdmFieldHandle* fi
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPerforationInterval::initAfterRead()
{
if (!m_startOfHistory_OBSOLETE)
{
m_useCustomStartDate = true;
}
}

View File

@@ -41,8 +41,8 @@ public:
virtual ~RimPerforationInterval(); virtual ~RimPerforationInterval();
void setStartAndEndMD(double startMD, double endMD); void setStartAndEndMD(double startMD, double endMD);
void setStartOfHistory();
void setStartDate(const QDate& date); void setStartDate(const QDate& date);
void setEndDate(const QDate& date);
void setDiameter(double diameter); void setDiameter(double diameter);
void setSkinFactor(double skinFactor); void setSkinFactor(double skinFactor);
double startMD() const; double startMD() const;
@@ -61,12 +61,19 @@ protected:
virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override; virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override;
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
virtual void initAfterRead() override;
private: private:
caf::PdmField< double > m_startMD; caf::PdmField< double > m_startMD;
caf::PdmField< double > m_endMD; caf::PdmField< double > m_endMD;
caf::PdmField< double > m_diameter; caf::PdmField< double > m_diameter;
caf::PdmField< double > m_skinFactor; caf::PdmField< double > m_skinFactor;
caf::PdmField< bool > m_startOfHistory;
caf::PdmField< bool > m_useCustomStartDate;
caf::PdmField< QDateTime > m_startDate; caf::PdmField< QDateTime > m_startDate;
caf::PdmField< bool > m_useCustomEndDate;
caf::PdmField< QDateTime > m_endDate;
caf::PdmField< bool > m_startOfHistory_OBSOLETE;
}; };