Skip to content

Commit

Permalink
check if a variable contains a type or not and if so use that also in…
Browse files Browse the repository at this point in the history
… dependencies
  • Loading branch information
JorisGoosen committed Nov 27, 2024
1 parent 67652e0 commit bbd0dd6
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 3 deletions.
16 changes: 15 additions & 1 deletion R/zzzWrappers.R
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,20 @@ jaspObjR <- R6::R6Class(

if (is.null(value))
stop("Expected not-null but got null")
private$jaspObject$setOptionMustContainDependency(name, value)

# so we want to depend on this option containing value, this usually works.
# however, in the situation that it is actually an encoded columnname + columntype it is different
# because the actual options from qml contains { value: [], types: [] }
# So lets see
decodedType = decodeColumnType(value)
if(decodedType != "unknown")
{
decodedName = decodeColumnName(value)
private$jaspObject$setOptionMustContainNestedDependency(c(name, "value"), decodedName)
private$jaspObject$setOptionMustContainNestedDependency(c(name, "types"), decodedType)
} else {
private$jaspObject$setOptionMustContainDependency(name, value)
}
}
}

Expand Down Expand Up @@ -542,6 +555,7 @@ jaspResultsR <- R6::R6Class(
setCurrentColumnNames = function(names) private$jaspObject$setCurrentColumnNames(names),
encodeColumnName = function(input) private$jaspObject$encodeColumnName(input),
decodeColumnName = function(input) private$jaspObject$decodeColumnName(input),
decodeColumnType = function(input) private$jaspObject$decodeColumnType(input),
encodeAllColumnNames = function(input) private$jaspObject$encodeAllColumnNames(input),
decodeAllColumnNames = function(input) private$jaspObject$decodeAllColumnNames(input)
),
Expand Down
1 change: 1 addition & 0 deletions src/jaspModuleRegistration.h
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ RCPP_MODULE(jaspResults)
.method("setCurrentColumnNames", &jaspResults_Interface::setCurrentColumnNames, "setCurrentColumnNames")
.method("encodeColumnName", &jaspResults_Interface::encodeColumnName, "encodeColumnName")
.method("decodeColumnName", &jaspResults_Interface::decodeColumnName, "decodeColumnName")
.method("decodeColumnType", &jaspResults_Interface::decodeColumnType, "decodeColumnType")
.method("encodeAllColumnNames", &jaspResults_Interface::encodeAllColumnNames, "encodeAllColumnNames")
.method("decodeAllColumnNames", &jaspResults_Interface::decodeAllColumnNames, "decodeAllColumnNames")
;
Expand Down
1 change: 0 additions & 1 deletion src/jaspObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,6 @@ void jaspObject::setNestedOptionMustContainDependency(Rcpp::CharacterVector nest
_nestedOptionMustContain[nestedKey] = RObject_to_JsonValue(mustContainThis);
}


void jaspObject::copyDependenciesFromJaspObject(jaspObject * other)
{
for(auto fieldVal : other->_optionMustBe)
Expand Down
4 changes: 3 additions & 1 deletion src/jaspResults.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ class jaspResults : public jaspContainer
void setCurrentColumnNames(const std::vector<std::string> & names) { GUARD_ENCODE_FUNCS(ColumnEncoder::setCurrentColumnNames(names); ) }

std::string encodeColumnName(const std::string & in) { GUARD_ENCODE_FUNCS(return _extraEncodings->shouldEncode(in) ? _extraEncodings->encode(in) : ColumnEncoder::columnEncoder()->encode(in); ) }
std::string decodeColumnName(const std::string & in) { GUARD_ENCODE_FUNCS(return _extraEncodings->shouldEncode(in) ? _extraEncodings->decode(in) : ColumnEncoder::columnEncoder()->decode(in); ) }
std::string decodeColumnName(const std::string & in) { GUARD_ENCODE_FUNCS(return _extraEncodings->shouldDecode(in) ? _extraEncodings->decode(in) : ColumnEncoder::columnEncoder()->decode(in); ) }
std::string decodeColumnType(const std::string & in) { GUARD_ENCODE_FUNCS(return columnTypeToString(_extraEncodings->shouldDecode(in) ? _extraEncodings->getColumnType(in) : ColumnEncoder::columnEncoder()->getColumnType(in)); ) }
std::string encodeAllColumnNames(const std::string & in){ GUARD_ENCODE_FUNCS(return ColumnEncoder::columnEncoder()->encodeAll(in); ) }
std::string decodeAllColumnNames(const std::string & in){ GUARD_ENCODE_FUNCS(return ColumnEncoder::columnEncoder()->decodeAll(in); ) }

Expand Down Expand Up @@ -186,6 +187,7 @@ class jaspResults_Interface : public jaspContainer_Interface

std::string encodeColumnName( const std::string & in) {return ((jaspResults*)myJaspObject)->encodeColumnName(in); }
std::string decodeColumnName( const std::string & in) {return ((jaspResults*)myJaspObject)->decodeColumnName(in); }
std::string decodeColumnType( const std::string & in) {return ((jaspResults*)myJaspObject)->decodeColumnType(in); }
std::string encodeAllColumnNames(const std::string & in) {return ((jaspResults*)myJaspObject)->encodeAllColumnNames(in); }
std::string decodeAllColumnNames(const std::string & in) {return ((jaspResults*)myJaspObject)->decodeAllColumnNames(in); }

Expand Down

0 comments on commit bbd0dd6

Please sign in to comment.