5#ifndef SCALE_DEFINITION_H
6#define SCALE_DEFINITION_H
39 ScaleParameter(
const std::string& t,
const std::string& d,
const std::string& desc)
83 ScaleDimension(
const std::string& i,
const std::string& n,
const std::string& abbr)
192 ScaleQuestion() :
coding(1),
random_group(1),
required_state(-1),
has_visible_when(false),
visible_when_logic(
"all"),
visible_when_is_complex(false),
likert_points(-1),
likert_min(-1),
likert_max(-1),
likert_reverse(false),
randomize_options(false),
min_value(0),
max_value(100),
has_gate(false),
gate_value(0.0),
revisable(true),
section_randomize(false) {}
266 static std::shared_ptr<ScaleDefinition>
CreateNew(
const std::string& code);
267 static std::shared_ptr<ScaleDefinition>
LoadFromFile(
const std::string& jsonPath);
271 bool ExportToJSON(
const std::string& definitionsPath,
const std::string& translationsPath);
275 bool LoadFromScalesDir(
const std::string& basePath,
const std::string& scaleCode);
278 static std::shared_ptr<ScaleDefinition>
LoadFromOSDFile(
const std::string& osdPath);
284 bool Validate(std::string& errorOutput);
288 std::map<std::string, ScaleParameter>&
GetParameters() {
return mParameters; }
292 std::map<std::string, DimensionScoring>&
GetScoring() {
return mScoring; }
293 std::map<std::string, ComputedVariable>&
GetComputed() {
return mComputed; }
301 const std::map<std::string, ScaleParameter>&
GetParameters()
const {
return mParameters; }
303 const std::vector<ScaleQuestion>&
GetQuestions()
const {
return mQuestions; }
304 const std::vector<ScaleDimension>&
GetDimensions()
const {
return mDimensions; }
305 const std::map<std::string, DimensionScoring>&
GetScoring()
const {
return mScoring; }
306 const std::map<std::string, ComputedVariable>&
GetComputed()
const {
return mComputed; }
325 void AddTranslation(
const std::string& language,
const std::string& key,
const std::string& value);
328 std::string
GetTranslation(
const std::string& language,
const std::string& key)
const;
347 bool LoadDefinitionJSON(
const std::string& jsonPath);
348 bool ParseDefinitionFromJSON(
const nlohmann::json& j);
349 bool LoadFromOSDBundlePath(
const std::string& osdPath);
350 bool LoadTranslationJSON(
const std::string& jsonPath,
const std::string& language);
351 bool SaveDefinitionJSON(
const std::string& jsonPath);
352 bool SaveTranslationJSON(
const std::string& jsonPath,
const std::string& language);
353 bool BuildDefinitionJSONObject(nlohmann::json& outJSON)
const;
356 std::map<std::string, ScaleParameter> mParameters;
358 std::vector<ScaleQuestion> mQuestions;
359 std::vector<ScaleDimension> mDimensions;
360 std::map<std::string, DimensionScoring> mScoring;
361 std::map<std::string, ComputedVariable> mComputed;
365 int mDefaultRequired;
370 nlohmann::json mRawDefinition;
std::map< std::string, std::map< std::string, std::string > > ScaleTranslations
bool Validate(std::string &errorOutput)
ScaleDimension * GetDimension(const std::string &dimensionID)
const ScaleInfo & GetScaleInfo() const
const ScaleTranslations & GetTranslations() const
std::map< std::string, ScaleParameter > & GetParameters()
void InsertQuestion(int index, const ScaleQuestion &question)
std::string GetTranslation(const std::string &language, const std::string &key) const
const std::vector< ScaleQuestion > & GetQuestions() const
void RemoveTranslation(const std::string &language)
bool LoadFromScalesDir(const std::string &basePath, const std::string &scaleCode)
void RemoveDimension(const std::string &dimensionID)
const nlohmann::json & GetRawDefinition() const
void AddDimension(const ScaleDimension &dimension)
std::vector< std::string > GetAvailableLanguages() const
static std::shared_ptr< ScaleDefinition > LoadFromFile(const std::string &jsonPath)
ScaleInfo & GetScaleInfo()
const ReportConfig & GetReportConfig() const
const DataOutput & GetDataOutput() const
nlohmann::json & GetRawDefinition()
std::map< std::string, ComputedVariable > & GetComputed()
std::vector< ScaleQuestion > & GetQuestions()
bool SaveToFile(const std::string &jsonPath)
std::map< std::string, DimensionScoring > & GetScoring()
void SetDefaultRequired(int val)
ScaleQuestion * GetQuestion(const std::string &questionID)
const LikertOptions & GetLikertOptions() const
LikertOptions & GetLikertOptions()
static std::shared_ptr< ScaleDefinition > CreateNew(const std::string &code)
ValidationResult ValidateInternal() const
void AddTranslation(const std::string &language, const std::string &key, const std::string &value)
bool ExportToJSON(const std::string &definitionsPath, const std::string &translationsPath)
ScaleTranslations & GetTranslations()
void AddQuestion(const ScaleQuestion &question)
static std::shared_ptr< ScaleDefinition > LoadFromOSDFile(const std::string &osdPath)
int GetDefaultRequired() const
void MoveQuestion(int fromIndex, int toIndex)
void SetDirty(bool dirty)
const std::map< std::string, ComputedVariable > & GetComputed() const
const std::map< std::string, DimensionScoring > & GetScoring() const
const std::map< std::string, ScaleParameter > & GetParameters() const
bool ExportToOSD(const std::string &outputDir)
const std::vector< ScaleDimension > & GetDimensions() const
std::vector< ScaleDimension > & GetDimensions()
DataOutput & GetDataOutput()
ReportConfig & GetReportConfig()
void RemoveQuestion(const std::string &questionID)
std::vector< NormThreshold > norms
std::string pooled_columns
std::string individual_file
std::vector< std::string > scores
std::map< std::string, std::vector< std::string > > correct_answers
std::vector< TransformStep > transform
std::vector< std::string > items
std::map< std::string, int > item_coding
std::map< std::string, double > weights
std::vector< NormThreshold > norms
std::map< std::string, std::vector< double > > value_map
std::vector< std::string > labels
std::string question_head
NormThreshold(double mn, double mx, const std::string &lbl)
std::string max_words_error
std::string pattern_error
std::string number_max_error
std::string number_min_error
std::string min_words_error
std::string max_selected_error
std::string min_length_error
std::string min_selected_error
std::string max_length_error
bool HasAnyValidation() const
std::vector< std::string > include
std::vector< std::string > footer_refs
std::string template_type
std::vector< std::string > warnings
std::vector< std::string > errors
std::vector< VisibleWhenCondition > visible_when
ScaleDimension(const std::string &i, const std::string &n, const std::string &abbr)
std::string enabled_param
std::string visible_when_logic
std::string license_explanation
ScaleParameter(const std::string &t, const std::string &d, const std::string &desc)
std::vector< std::string > options
std::string vas_orientation
std::string gate_terminate_message_key
std::vector< VisibleWhenCondition > visible_when_simple
std::vector< std::string > rows
std::vector< VasAnchor > vas_anchors
QuestionValidation validation
std::vector< std::string > options
std::string gate_required_value
std::vector< std::string > correct
std::vector< std::string > section_randomize_fixed
std::vector< std::string > columns
std::vector< std::string > likert_labels
std::string visible_when_logic
bool visible_when_is_complex
std::string question_head
std::string gate_operator
std::vector< std::string > values