/*global */ //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // eslint-disable-next-line no-unused-vars var SZUserOptions = function() { var _userOptionsMap; //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbSetUserOptionsMap(userOptionsMap_) { _userOptionsMap = userOptionsMap_; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pvGetOrCreateUserOptionsMap() { if(!_userOptionsMap) { _userOptionsMap = {}; } return _userOptionsMap; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pvGetOption(optionId_) { var rc; if(null !== _userOptionsMap) { if(Object.prototype.hasOwnProperty.call(_userOptionsMap, optionId_)) { rc = _userOptionsMap[optionId_]; } } return rc; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pvGetOrCreateOption(optionId_) { var objOption = pvGetOption(optionId_); if(!objOption) { objOption = {}; pvGetOrCreateUserOptionsMap()[optionId_] = objOption; } return objOption; } //-------------------------------------------------------------------------- // Returns the "0/1" version of a boolean value. //-------------------------------------------------------------------------- function pbGetBooleanOption(optionId_, defaultValue_) { var objOption = pvGetOption(optionId_), rc = objOption ? objOption.booleanValFromIntVal : defaultValue_; if(rc !== null && rc !== undefined) { rc = rc ? 1 : 0; } return rc; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbSetBooleanOption(optionId_, value_) { var objOption = pvGetOrCreateOption(optionId_), tmpUnderlyingVal = value_ ? 1 : 0; objOption.intVal = tmpUnderlyingVal; objOption.decimalVal = tmpUnderlyingVal; objOption.booleanValFromIntVal = !!value_; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbGetIntOption(optionId_, defaultValue_) { var objOption = pvGetOption(optionId_), rc = objOption ? objOption.intVal : defaultValue_; return rc; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbSetIntOption(optionId_, value_) { var objOption = pvGetOrCreateOption(optionId_), tmpFloatValue, tmpIntVal = null; if(Number.isInteger(value_)) { tmpIntVal = value_; } else if('' !== value_ && null !== value_ && undefined !== value_) { tmpFloatValue = parseFloat(value_); if(Number.isInteger(tmpFloatValue)) { tmpIntVal = parseInt(tmpFloatValue); } } objOption.intVal = tmpIntVal; objOption.decimalVal = tmpIntVal; objOption.booleanValFromIntVal = tmpIntVal === 1; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbGetDecimalOption(optionId_, defaultValue_) { var objOption = pvGetOption(optionId_), rc = objOption ? objOption.decimalVal : defaultValue_; return rc; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbSetDecimalOption(optionId_, value_) { var objOption = pvGetOrCreateOption(optionId_), tmpFloatValue = parseFloat(value_), tmpIsNaN = isNaN(tmpFloatValue), tmpValueIsInteger = !tmpIsNaN && Number.isInteger(tmpFloatValue), tmpParsedAsInt = tmpValueIsInteger ? parseInt(value_, 10) : null; objOption.intVal = tmpParsedAsInt; objOption.decimalVal = tmpIsNaN ? null : tmpFloatValue; objOption.booleanValFromIntVal = tmpParsedAsInt === 1; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbGetStringOption(optionId_, defaultValue_) { var objOption = pvGetOption(optionId_), rc = objOption ? objOption.noteVal : defaultValue_; return rc; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbSetStringOption(optionId_, value_) { var objOption = pvGetOrCreateOption(optionId_), tmpFloatValue = parseFloat(value_), tmpIsNaN = isNaN(tmpFloatValue), tmpValueIsInteger = !tmpIsNaN && Number.isInteger(tmpFloatValue), tmpParsedAsInt = tmpValueIsInteger ? parseInt(value_, 10) : null; objOption.stringValue = value_; objOption.intVal = tmpParsedAsInt; objOption.decimalVal = tmpIsNaN ? null : tmpFloatValue; objOption.booleanValFromIntVal = tmpParsedAsInt === 1; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbGetDateOnlyOption(optionId_, defaultValue_) { var objOption = pvGetOption(optionId_), rc = objOption ? objOption.dateOnlyOption : defaultValue_; return rc; } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- function pbSetDateOnlyOption(optionId_, value_) { var objOption = pvGetOrCreateOption(optionId_); objOption.dateOnlyOption = value_ || null; } //-------------------------------------------------------------------------- // SZUserOptions //-------------------------------------------------------------------------- return { setUserOptionsMap: pbSetUserOptionsMap, getBooleanOption: pbGetBooleanOption, setBooleanOption: pbSetBooleanOption, getIntOption: pbGetIntOption, setIntOption: pbSetIntOption, getDecimalOption: pbGetDecimalOption, setDecimalOption: pbSetDecimalOption, getStringOption: pbGetStringOption, setStringOption: pbSetStringOption, getDateOnlyOption: pbGetDateOnlyOption, setDateOnlyOption: pbSetDateOnlyOption }; }();