#ifndef NMDATASENSITIVE_H #define NMDATASENSITIVE_H #include #include #include #include #include "nmData_global.h" #include "nmDataBase.h" #include "nmDataAttribute.h" #include class NM_DATA_EXPORT nmDataSensitive : public nmDataBase { Q_OBJECT public: // 顶部 Calculation type enum CalculationType { CALC_DETERMINISTIC = 0, CALC_DETERMINISTIC_MULTIVARIATE = 1 }; struct NM_DATA_EXPORT VariableSampling { // 变量所属分组 QString m_varGroup; // 变量名称 QString m_varName; // 是否勾选 bool m_enabled; // Mode 枚举 enum Mode { MODE_AUTOMATIC = 0, MODE_MANUAL = 1 }; // Mode 存储字段 Mode m_mode; // Log? 勾选 bool m_log; // Number int m_number; // 数据参数 nmDataAttribute m_modelValue; // Model value nmDataAttribute m_minValue; // Minimum nmDataAttribute m_maxValue; // Maximum // 表格中的数值列表 QVector m_values; VariableSampling(); // JSON 序列化 / 反序列化 rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const; void FromJsonValue(const rapidjson::Value& jsonValue); // varGroup QString getVarGroup() const; void setVarGroup(const QString& group); // varName QString getVarName() const; void setVarName(const QString& name); // enabled bool getEnabled() const; void setEnabled(bool e); // mode Mode getMode() const; void setMode(Mode m); // log bool getLog() const; void setLog(bool l); // number int getNumber() const; void setNumber(int n); // modelValue nmDataAttribute& getModelValue(); void setModelValue(const nmDataAttribute& attr); // minValue nmDataAttribute& getMinValue(); void setMinValue(const nmDataAttribute& attr); // maxValue nmDataAttribute& getMaxValue(); void setMaxValue(const nmDataAttribute& attr); // values QVector& getValues(); void setValues(const QVector& vals); }; public: nmDataSensitive(); ~nmDataSensitive(); nmDataSensitive(const nmDataSensitive& other); nmDataSensitive& operator=(const nmDataSensitive& other); // === 实现 nmDataBase 的抽象方法 === virtual rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const override; virtual void FromJsonValue(const rapidjson::Value& jsonValue) override; // === Calculation type === CalculationType getCalculationType() const; void setCalculationType(CalculationType type); // === 总模型数 === int getTotalModelCount() const; void setTotalModelCount(int count); // === 变量列表 === QList& getVariables(); void setVariables(const QList& vars); int getVariableCount() const; VariableSampling& getVariable(int index); private: CalculationType m_calcType; int m_totalModelCount; QList m_variables; }; #endif // NMDATASENSITIVE_H