You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmSubWxs/nmReservoirParameterCatalog.h

144 lines
6.0 KiB
C

#pragma once
#include "nmSubWxs_global.h"
#include "nmDefines.h"
#include <QList>
#include <QString>
class nmAttrRegistry;
struct nmReservoirPropertiesSnapshot;
/** @brief 储层参数编辑页面分类。 */
enum nmReservoirPropertiesCategory
{
NM_RESERVOIR_PAGE_RESERVOIR = 0, ///< 储层。
NM_RESERVOIR_PAGE_WELL, ///< 井。
NM_RESERVOIR_PAGE_FAULT, ///< 断层。
NM_RESERVOIR_PAGE_FRACTURE, ///< 裂缝。
NM_RESERVOIR_PAGE_COMPOSITE_REGION, ///< 复合区。
NM_RESERVOIR_PAGE_REGION_MARK, ///< 区域标记。
NM_RESERVOIR_PAGE_COUNT ///< 分类数量。
};
/** @brief 参数对象的具体类型。 */
enum nmReservoirPropertiesObjectType
{
NM_RESERVOIR_OBJECT_RESERVOIR = 0, ///< 储层对象。
NM_RESERVOIR_OBJECT_VERTICAL_WELL, ///< 直井对象。
NM_RESERVOIR_OBJECT_VERTICAL_FRAC_WELL, ///< 垂直压裂井对象。
NM_RESERVOIR_OBJECT_HORIZONTAL_FRAC_WELL,///< 水平压裂井对象。
NM_RESERVOIR_OBJECT_REGION_MARK, ///< 区域标记对象。
NM_RESERVOIR_OBJECT_FAULT, ///< 断层对象。
NM_RESERVOIR_OBJECT_FRACTURE, ///< 裂缝对象。
NM_RESERVOIR_OBJECT_REGION ///< 复合区对象。
};
/** @brief 参数字段的编辑器类型。 */
enum nmReservoirParameterEditorType
{
NM_RESERVOIR_EDITOR_NUMBER = 0, ///< 浮点数输入框。
NM_RESERVOIR_EDITOR_INTEGER, ///< 整数输入框。
NM_RESERVOIR_EDITOR_ENUM ///< 稳定code枚举下拉框。
};
/** @brief 枚举下拉框选项。 */
struct NM_SUB_WXS_EXPORT nmReservoirEnumOption
{
QString m_sCode; ///< 不随语言变化的业务代码。
QString m_sText; ///< 当前语言下的显示文本。
};
/**
* @brief
* @note IDIDXML
*/
struct NM_SUB_WXS_EXPORT nmReservoirParameterFieldInfo
{
QString m_sParameterId; ///< 编辑会话中的稳定参数ID。
QString m_sBaseParameterId; ///< 中英文参数XML中的基础参数ID。
QString m_sLabel; ///< 枚举字段的显示名称数值字段留空时读取XML别名。
nmReservoirParameterEditorType m_eEditorType; ///< 字段编辑器类型。
bool m_bUnitEnabled; ///< 是否为该字段创建单位下拉框。
QList<nmReservoirEnumOption> m_listOptions; ///< 枚举字段的稳定选项。
};
/** @brief 参数分组的界面描述。 */
struct NM_SUB_WXS_EXPORT nmReservoirParameterGroupInfo
{
QString m_sTitle; ///< 分组标题。
int m_nRow; ///< 分组在页面网格中的行。
int m_nColumn; ///< 分组在页面网格中的列。
int m_nRowSpan; ///< 分组纵向跨越的行数。
int m_nColumnSpan; ///< 分组横跨的列数。
bool m_bValueRightAligned; ///< 数值输入是否右对齐。
QList<nmReservoirParameterFieldInfo> m_listFields; ///< 分组内按显示顺序排列的字段。
};
/** @brief 单个可编辑对象的完整界面描述。 */
struct NM_SUB_WXS_EXPORT nmReservoirPropertyObjectInfo
{
nmReservoirPropertiesCategory m_eCategory; ///< 对象所属页面分类。
nmReservoirPropertiesObjectType m_eObjectType; ///< 对象具体类型。
int m_nSourceIndex; ///< 对象在工作副本容器中的索引。
QString m_sObjectCode; ///< 编辑会话内稳定的对象编码。
QString m_sDisplayName; ///< 对象显示名称。
QList<nmReservoirParameterGroupInfo> m_listGroups; ///< 原型式分组和字段描述。
};
/**
* @brief
* @note IDID
*/
class NM_SUB_WXS_EXPORT nmReservoirParameterCatalog
{
public:
/**
* @brief
* @param pRegistry
* @param oSnapshot
*/
static void registerSnapshot(nmAttrRegistry* pRegistry,
nmReservoirPropertiesSnapshot& oSnapshot);
/**
* @brief
* @param eCategory
* @param oSnapshot
* @return
*/
static QList<nmReservoirPropertyObjectInfo> createObjectInfos(
nmReservoirPropertiesCategory eCategory,
nmReservoirPropertiesSnapshot& oSnapshot);
/**
* @brief code
* @param sParameterId ID
* @param sStoredValue
* @return code
*/
static QString enumCodeFromStoredValue(const QString& sParameterId,
const QString& sStoredValue);
/**
* @brief code
* @param sParameterId ID
* @param sCode code
* @return 使
*/
static QString storedValueFromEnumCode(const QString& sParameterId,
const QString& sCode);
/** @brief 读取工作副本中的枚举code。 */
static QString enumCode(const nmReservoirPropertiesSnapshot& oSnapshot,
const QString& sParameterId);
/** @brief 修改工作副本中的枚举code。 */
static bool setEnumCode(nmReservoirPropertiesSnapshot& oSnapshot,
const QString& sParameterId,
const QString& sCode);
private:
nmReservoirParameterCatalog();
};