#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->setDiameter(interval.diameter);
perforationInterval->setSkinFactor(interval.skinFactor);
if (interval.startOfHistory)
{
perforationInterval->setStartOfHistory();
}
else
if (!interval.startOfHistory)
{
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_diameter, "Diameter", 0.216, "Diameter", "", "", "");
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);
}
@ -65,20 +72,25 @@ void RimPerforationInterval::setStartAndEndMD(double startMD, double endMD)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPerforationInterval::setStartOfHistory()
void RimPerforationInterval::setStartDate(const QDate& date)
{
m_startOfHistory = true;
m_startDate.uiCapability()->setUiReadOnly(m_startOfHistory());
if (date.isValid())
{
m_useCustomStartDate = true;
m_startDate = QDateTime(date);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPerforationInterval::setStartDate(const QDate& date)
void RimPerforationInterval::setEndDate(const QDate& date)
{
m_startOfHistory = false;
m_startDate = QDateTime(date);
if (date.isValid())
{
m_useCustomEndDate = true;
m_endDate = QDateTime(date);
}
}
//--------------------------------------------------------------------------------------------------
@ -144,14 +156,11 @@ double RimPerforationInterval::skinFactor() const
//--------------------------------------------------------------------------------------------------
bool RimPerforationInterval::isActiveOnDate(const QDateTime& date) const
{
if (m_startOfHistory())
{
return true;
}
if (m_useCustomStartDate() && date < m_startDate()) return false;
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)
{
if (changedField == &m_startOfHistory)
{
m_startDate.uiCapability()->setUiReadOnly(m_startOfHistory());
}
RimProject* proj;
this->firstAncestorOrThisOfTypeAsserted(proj);
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_endMD);
uiOrdering.add(&m_diameter);
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();
}
@ -259,7 +271,7 @@ void RimPerforationInterval::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
//--------------------------------------------------------------------------------------------------
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);
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();
void setStartAndEndMD(double startMD, double endMD);
void setStartOfHistory();
void setStartDate(const QDate& date);
void setEndDate(const QDate& date);
void setDiameter(double diameter);
void setSkinFactor(double skinFactor);
double startMD() const;
@ -61,12 +61,19 @@ protected:
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 defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
virtual void initAfterRead() override;
private:
caf::PdmField< double > m_startMD;
caf::PdmField< double > m_endMD;
caf::PdmField< double > m_diameter;
caf::PdmField< double > m_skinFactor;
caf::PdmField< bool > m_startOfHistory;
caf::PdmField< bool > m_useCustomStartDate;
caf::PdmField< QDateTime > m_startDate;
caf::PdmField< bool > m_useCustomEndDate;
caf::PdmField< QDateTime > m_endDate;
caf::PdmField< bool > m_startOfHistory_OBSOLETE;
};